对象字面量(Object Literals)是js中创建对象的一种方法,在ES6中通过如下语法,让对象字面量变得更加强大简洁。
- 属性初始值的简写
当一个对象的属性与本地变量同名时,可以不用写冒号和值,简单地只写属性名即可。
function testFunc(color, name) {
return {
// 有同名地参数,只写属性名就可以
color,
name
}
}
let color = 'red'
let name = 'zhang wu'
var obj = {color, name}
// 有同名地本地变量,只写属性名即可
注:当对象字面量里只有属性名称时,js引擎会在可访问作用域中查找与其同名的变量,如找到就把变量的值赋值给对象字面量里的同名属性
- 对象方法的简写语法
ES6中定义对象方法时可以省略冒号和function关键字。
var obj = {
color: 'red',
showColor() {
console.log(this.color)
}
}
obj.showColor()
console.log(obj.showColor.name) // showColor
注:通过对象方法的简写语法创建的方法有一个name属性,其值为圆括号前面的名称。
- 可计算的属性名
在js中访问对象的属性,可通过点号(.)或方括号([]),如果属性名包含了特殊字符或中文,或者需要通过计算得到属性名,只能用方括号。
let suffix = 'name'
let obj = {}
obj['first name'] = 'zhangsan' // 属性名中有空格
obj['last' + suffix] = 'liwu' // 属性名由表达式计算得到
console.log(obj) // {'first name': 'zhangsan', 'last name': 'liwu'}
在ES6中可以在对象字面量中使用可计算的属性名称。
let suffix = 'name'
let obj = {
['first' + suffix]: 'zhangsan',
['last' + suffix]: 'liwu'
}
console.log(obj) // {'first name': 'zhangsan', 'last name': 'liwu'}
网友评论