[js高手之路] es6系列教程 - 对象功能扩展详解
第一:字面量对象的方法,支持缩写形式
//es6之前,这么写
var User = {
name : 'ghostwu',
showName : function(){
return this.name;
}
};
console.log( User.showName() );
//有了es6之后,这么写
let User = {
name : 'ghostwu',
showName (){
return this.name;
}
};
console.log( User.showName() );
方法缩写规则: 在原来的基础上去掉 冒号 和 function关键字
第二:对象中的属性与变量名或者参数 同名的时候, 可以省略赋值的操作
//参数与属性同名
let User = function( name, age ){
return {
name : name,
age : age
}
};
let oUser = User( 'ghostwu', 22 );
console.log( oUser.name, oUser.age );
上面例子中的写法,可以简写为:
let User = function( name, age ){
return {
name, //省略name的赋值, 会在作用域中查找同名的name变量或者参数
age //省略age的赋值,会在作用域中查找同名的age变量或者参数
}
};
let oUser = User( 'ghostwu', 22 );
console.log( oUser.name, oUser.age );
let User = function(){
let name = 'ghostwu', age = 26;
return {
name, //查找到同名变量name,赋值给name属性
age //查找到同名变量age,赋值给age属性
}
};
let oUser = User();
console.log( oUser.name, oUser.age );
let User = function(){
let name = 'ghostwu', age2 = 26;
return {
name,
age //当没有同名变量或者参数时,省略写法会报错
}
};
let oUser = User();
console.log( oUser.name, oUser.age );
let User = function( name, age ){//形参相当于var name, var age
let name = 'ghostwu', age = 26;//let不能重定义, 报错
return {
name,
age
}
};
let oUser = User( 'zhangsan', 20 );
console.log( oUser.name, oUser.age );
如果同时出现同名参数和let定义的同名变量时候,会报语法错误,如果不知道为什么,请看下我之前写的博客文章:
[js高手之路] es6系列教程 - var, let, const详解
第三:可计算属性名, 即: 属性名支持表达式参与运算
let User = {};
let lastName = "last Name"; User['first Name'] = 'ghost';
User[lastName] = 'wu'; //lastName被解释为last name, 从而等价于User['last Name'] = 'wu'
console.log( User['first Name'] , User['last Name'] );
let User = {
"full Name" : "ghostwu",
// first Name : "ghostwu" //属性名包含空格或者特殊符号要用引号或者转义处理,否则报错
};
console.log( User['full Name'] );
let firstName = 'first name';
let lastName = 'last name';
//属性名如果用中括号括起来,属性名就被解释成了变量
let User = {
[firstName] : 'ghost',
[lastName] : 'wu',
}; console.log( User['firstName']); //undefined
console.log( User['lastName']); //undefined
console.log( User['first name']); //ghost
console.log( User['last name']); //wu
用中括号把属性括起来,属性就变成了变量,变量就可以用操作符组合成表达式,参与运算,所以叫计算表达式
let suffix = ' Name';
let User = {
['first' + suffix] : 'ghost',
['last' + suffix] : 'wu',
};
console.log( User['first Name'], User['last Name']);
[js高手之路] es6系列教程 - 对象功能扩展详解的更多相关文章
- [js高手之路] es6系列教程 - 迭代器与生成器详解
什么是迭代器? 迭代器是一种特殊对象,这种对象具有以下特点: 1,所有对象都有一个next方法 2,每次调用next方法,都会返回一个对象,该对象包含两个属性,一个是value, 表示下一个将要返回的 ...
- [js高手之路] es6系列教程 - promise常见用法详解(resolve,reject,catch,then,all,race)
关于promise我在之前的文章已经应用过好几次,如[js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist,本文就来讲解下pro ...
- [js高手之路] es6系列教程 - var, let, const详解
function show( flag ){ console.log( a ); if( flag ){ var a = 'ghostwu'; return a; } else { console.l ...
- [js高手之路] es6系列教程 - 迭代器,生成器,for...of,entries,values,keys等详解
接着上文[js高手之路] es6系列教程 - 迭代器与生成器详解继续. 在es6中引入了一个新的循环结构for ....of, 主要是用来循环可迭代的对象,那么什么是可迭代的对象呢? 可迭代的对象一般 ...
- [js高手之路] es6系列教程 - 函数的默认参数详解
在ES6之前,我们一般用短路表达式处理默认参数 function show( a, b ){ var a = a || 10; var b = b || 20; console.log( a, b ) ...
- [js高手之路] es6系列教程 - 箭头函数详解
箭头函数是es6新增的非常有意思的特性,初次写起来,可能会觉得别扭,习惯之后,会发现很精简. 什么是箭头函数? 箭头函数是一种使用箭头( => )定义函数的新语法, 主要有以下特性: 不能通过n ...
- [js高手之路] es6系列教程 - 不定参数与展开运算符(...)
三个点(...)在es6中,有两个含义: 用在形参中, 表示传递给他的参数集合, 类似于arguments, 叫不定参数. 语法格式: 在形参面前加三个点( ... ) 用在数组前面,可以把数组的值 ...
- [js高手之路]es6系列教程 - 解构详解
解构通俗点说,就是通过一种特定格式,快捷的读取对象/数组中的数据的方法, es6之前,我们通过对象名称[键] 读取数据 var User = { 'name' : 'ghostwu', 'age' : ...
- [js高手之路] es6系列教程 - Set详解与抽奖程序应用实战
我们还是从一些现有的需求和问题出发,为什么会有set,他的存在是为了解决什么问题? 我们看一个这样的例子,为一个对象添加键值对 var obj = Object.create( null ); obj ...
随机推荐
- 网页中区分IE各版本
CSS Hack 直接在CSS文件中写CSS Hack是非常直观的区分方法.区分不同IE版本的hack代码为 #content{ background:red; /* 所有浏览器 */ backgro ...
- 关于MATLAB处理大数据坐标文件2017526
运行六个特征,提高了3分,也就是说以前做的特征已经用完了,穷途末路,依靠以前的特征已经很难取得进步了,提出以下建议 1.测试集曾经运行错误的数据尽早画出图形,并尽可能发现问题并提出特征 2.运行其他程 ...
- Notepad++的正则表达式替换和替换
[1]如果从行首匹配,可以用"^"来实现,[2]如果从行尾匹配,可以用"$"来实现, 在查找内容里面输入"345$" 这里"$&q ...
- php下拉菜单选中值在选择之后保留并且显示
<select id="select_platform" name="source" style="height:35px;"> ...
- 新浪云计算SAE部署代码过程
第一步:创建本地工作目录: 创建一个新文件夹,可以使用应用名为文件夹名,比如命名为test 第二步:从SAE的SVN仓库检出(checkout)一个应用的全部版本代码,右键–>点击“SVN Ch ...
- 读书笔记-Software Testing(By Ron Patton)
Software Testing Part I:The Big Picture 1.Software Testing Background Bug's formal definition 1.The ...
- HDOJ 1260 DP
Tickets Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- 轻量级代码生成器-OnlyCoder 第二篇
最近利用业余时间将OnlyCoder又重新打造了一番,使其使用起来更简单.更顺手. 相关的帮助文档也已发布了版本. 界面改版,UI采用了DotNetBar2组件. 还是先看下UI效果吧. 由于使用了 ...
- java for循环
publicclass Test2 { staticboolean foo(char c) { System.out.print(c); returntrue; ...
- HelloGitHub.com 网站开源了
简介 随着 HelloGitHub 月刊持续更新了一年多,内容变的越来越多.因为内容数据没有结构化,如果还是使用之前的编辑文本的方式编辑月刊内容,会对后面的继续发刊和维护带来了很多问题和多余的工作,例 ...