对象简写
ES6中规定可以直接在对象中写入变量和函数作为对象的属性和方法,此时属性名为变量名, 属性值为变量的值。对象简写在未来的使用频率极其高。
var name= 'terry';
var foo= {
name,
sayName(){
console.log('my name is',this.name);
}
};
let username = '张三';
let obj = {
username,
sayName: function () {
// ES5在对象中声明函数的方法
},
sayAge () {
}
}
对象API拓展
ES6中对于Object的拓展主要是静态方法的拓展。
Object.is() 判断两个值是否一样
Object.assign() ,
Object.assign(obj1, obj2) 深复制
Object.assign(obj1, obj2, obj3) 对象组合
Object.setPrototypeOf(obj1, obj2) 为目标对象设置原型
Object.getPrototypeOf() 获取目标对象的原型
Object.keys() 返回对象属性名组成的数组
Object.values() 返回对象属性值组成的数组
Object.entries() 返回对象[属性名, 属性值]组成的数组
// console.log(-0 === +0);
// console.log(Object.is(-0 === +0));
// console.log(NaN === NaN);
// console.log(Object.is(NaN === NaN));
let obj1 = {
name: 'zhangsan'
}
let obj2 = {
name: 'lisi',
age: 12
}
let newObj = {};
Object.assign(newObj, obj1, obj2);
console.log(newObj)
// console.log(newObj === obj);
let obj1 = {
name: 'zhangsan',
age: 12
}
let obj2 = {
name: 'lisi',
gender: 'male'
}
// 设置obj1的原型
Object.setPrototypeOf(obj1, obj2);
// 获取obj1的原型
console.log(obj1.__proto__);
console.log(obj1.constructor.prototype);
console.log(Object.getPrototypeOf(obj1));
let obj1 = {
1: '张三',
2: '李四',
3: '王五'
}
let key = Object.keys(obj1);
let value = Object.values(obj1);
let entry = Object.entries(obj1);
console.log(key);
console.log(value);
console.log(entry);
// [ '1', '2', '3' ]
// [ '张三', '李四', '王五' ]
// [ [ '1', '张三' ], [ '2', '李四' ], [ '3', '王五' ] ]