文章目录
一、Javascript扩展的对象功能
ES6 注重于提高对象的效用,这是因为在 JS 中几乎所有的值都是某种类型的对象。
1.1 对象字面量语法的扩展
在 ES5 及更早版本中,对象字面量是“键/值对”的简单集合。这意味着在属性值被初始化时可能会有些重复
function createPerson(name, age){
return {
name: name,
age: age
}
}
createPerson() 函数创建了一个对象,其属性名与函数的参数名相同。此结果看起来重复了name 与 age ,尽管一边是对象属性的名称,而另一边则负责给属性提供值。在所返回的对象中,它的 name 键与 age 键分别被变量 name 与 age 变量所赋值。
在 ES6 中,你可以使用属性初始化器的速记法来消除对象名称与本地变量的重复情况。当对象的一个属性名称与本地变量名相同时,你可以简单书写名称而省略冒号与值
function createPerson(name, age){
return {
name,
age
}
}
当对象字面量中的属性只有名称时, JS 引擎会在周边作用域查找同名变量。若找到,该变量的值将会被赋给对象字面量的同名属性。在本例中,局部变量 name 的值就被赋给了 name 属性。
这个扩展使得对象字面量的初始化更加简洁,也有助于消除命名错误。用局部变量为对象同名属性赋值在 JS 中是极其常见的模式,因此这个扩展自然非常受欢迎。
1.2 方法简写
ES6 同样改进了为对象字面量方法赋值的语法。在 ES5 及更早版本中,你必须指定一个名称并用完整的函数定义来为对象添加方法,如下:
const person01 = {
name: 'kangyun',
sayName: function(){
console.log(this.name)
}
}
// 方法简写
const person02 = {
name: 'kangyun',
sayName(){
console.log(this.name)
}
}
在 ES5 及更早版本中,对象实例能使用“需计算的属性名”,只要用方括号表示法来代替小数点表示法即可。方括号允许你将变量或字符串字面量指定为属性名,而在字符串中允许存在作为标识符时会导致语法错误的特殊字符。这里有个范例:
const person = {
}