目录
1.属性的简写
如果对象中只写属性名,不写属性值。这时,属性值等于属性名所代表的变量。
//es5写法
var name='cc';
var obj={
name:name,
age:12
}
//es6
var obj={
name,
age:12
}
2.Object API
es6对于Object构造函数也进行了扩展,加入了一些方法,如下。
1.Object.is()
用于比较两个值是否严格相等。与(===)基本一致,不同之处如下:
+0===-0 //true
NaN===NaN //false
Object.is(+0,-0); //false
Object.is(NaN,NaN); //true
2.Object.assign()
用来将源对象的所有可枚举属性复制到目标对象。它至少需要两个对象作为参数,第一个参数是目标对象,后面的参数都是源对象。只要有一个参数不是对象就会报错。
var a={name:'cc',age:12};
var b={gender:'male'};
var c={name:'cc01'};
//将b,c加入到a中
Object.assign(a,b,c); //{name: "cc01", age: 12, gender: "male"}
2.1 为对象添加方法
Object.assign(Person.prototype,{
sayName(){
...
},
sayAge(){
...
}
});
//===>等价
Person.prototype.sayName=function(){...};
Person.prorotype.sayAge=function(){...};
3.Object.setPrototypeOf(obj,prototype)
将prototype对象设置为obj的原型。
function Animal(){
...
}
function Dog(){
...
}
//继承
Dog.prototype=new Animal();
//es6
Object.setPrototypeOf(Dog,new Animal);
4.Object.getPrototypeOf(obj)
用于读取一个对象的prototype对象
5. Object.keys(obj)
返回一个数组,包括自身的(不包含继承的)所有可枚举属性(Symbol属性)
**:for-in 遍历对象自身和继承的可枚举属性。
6. Object.values()
返回对象中包含所有属性值的数组
7. Object.entries()
返回对象所有键值对组成的数组
var obj={
a:1,
b:2,
c:3
}
Object.keys(obj); //["a","b","c"];
Object.values(obj); //[1,2,3];
Object.entries(obj); //[["a",1],["b",2],["c",3]]
3.扩展运算符
该运算符用于取出参数对象的所有可遍历属性,复制到当前对象中。
let obj={name:'cc',age:12};
let n={...obj};
console.log(n);//{name:'cc',age:12}
合并对象
var a={
sayName(){
console.log('say Name');
}
}
var b={
...a,
sayAge(){
console.log('say age');
}
}
b.sayName();