ES6对对象进行了一系列的扩展,其中包括书写方式及函数;
1、对象简写
2、可计算属性
let name = 'angela';
let front = 'lee-';
let obj = {
name, // kv 相同,简写
getName() {
console.log(name);
}, // 等同于 getName: function() {}
[front + name]: name // 可扩展属性;
}
obj.getName();
3、关于对象新增的方法;
静态方法: Object.is() (勉强这么说…加强的比较运算符)
console.log(NaN == NaN) // false
console.log(NaN === NaN) // false
console.log(Object.is(NaN,NaN)) // true
console.log(Object.is(+0,-0)); // false
console.log(+0 === -0); //true
console.log(Object.is([],0)); // false
console.log([] == 0); // true
Object.assign(obj1,obj2,obj3,...,objn) mix-in 将对象混合,将obj2-objn克隆到obj1中;
let obj = {
name: 'angela'
}
let obj1 = {
age: 18
}
let obj2 = {
age: 16,
name: 'limin',
sex: 'female'
}
var objM = Object.assign(obj,obj1,obj2);
console.log(objM); // objM = {name:'limin',age:'16'.sex:'female'}
obj.name = 'this has been changed';
obj2.age = 22; // 深度克隆
console.log(objM); // name 改变了
console.log(objM === obj); // true 返回obj,并没有生成新对象,而是对obj进行操作
var obj = {
name: 'angela',
age: 18,
sex: 'female'
}
var obj1 = {
name: 'angela'
}
console.log(Object.keys(obj)); //拿出对象的key值,数组形式 ['name','age','sex']
console.log(Object.values(obj)); // 拿出对象的value值,数组形式 ['angela',18,'female']
console.log(Object.entries(obj)) // 拿出对象的key-value值,数组形式[['name','angela'],['age',18],['sex','female']];
Object.setPrototypeOf(obj,obj1) // 将obj的原型设置为obj1
console.log(Object.getPrototypeOf(obj)); // 获取obj1的原型;obj1 = {}
console.log(obj1.isPrototypeOf(obj)); //true