1.对象属性赋值、方法的简写
es5写法:
const name = 'tom', age = 20;
const person = {
name: name,
age: age,
getName: function () {
console.log(this.name);
}
};
person.getName();//tom
es6直接写入变量和函数,作为对象的属性和方法:
const name = 'tom', age = 20;
const person = {
name,//等价于name:name
age,
getName() {
console.log(this.name);
}
};
person.getName();//tom
注意: es6写法中对象的属性名必须和定义的变量名一样,否则会报错。
2.函数返回对象的简写
es5写法:
function fn(x, y) {
return {x: x, y: y};
}
console.log(fn(1, 2));//{x: 1, y: 2}
es6简写:
function fn(x, y) {
return {x, y};
}
console.log(fn(1, 2));//{x: 1, y: 2}
3.使用表达式对属性名和方法名进行组合
const obj = {};
const name = 'a';
obj[name + 'bc'] = 123;
obj['get' + 'Name'] = function () {
console.log(this.abc);
};
console.log(obj);//{abc: 123, getName: ƒ}
obj.getName();//123
//--------------------
const name = 'a';
const obj = {
[name + 'bc']: 123,
['f' + 'un']() {
console.log(this.abc);
}
};
console.log(obj);//{abc: 123, fun: ƒ}
obj.fun();//123
4.对象的方法
Object.is(): 和===的作用一样,用来比较两个值是否严格相等。但是===还有个缺陷
console.log(NaN === NaN);//false,===的缺陷
console.log(Object.is(NaN, NaN));//true
Object.assign(): 将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
let newObj = Object.assign({},{a:1},{b:2});
console.log(newObj);//{a: 1, b: 2}