1.属性的简洁标识方法
1)属性简写
var foo = ‘bar’;
var baz = {foo};
baz // {foo : foo} 不写顺序ing值,属性值等于属性名所代表的变量!
2)方法简写
{
class(){ //简洁写法中属性名总是字符串,所以是关键字也无妨
return ....
},
data : function (){
}
}
2.属性名表达式
obj['a' + 'bc'] = 123 //ES6/ES5都可以使用
var obj = {
'abc' :123, //ES6
['abc']:123 , //ES6
abc:123 //ES6/ES5
}
注意:属性名表达式不能与简洁写法表达式同时使用
3.Object.is(a,b)用来比较两个值是否严格相等,(===,+0!= -0,NaN = NaN)
4.Object.assign()
Object.assign(target,resource1,resource2)将resource对象的所有可枚举属性全部复制到目标对象,如有同名后者覆盖前者。
应用:
为对象添加属性(这个的话,应该没必要用);
为对象添加方法
Objectassign(someClass.prototype,{
someMethod(){
}
})
等价于SomeClass.prototype.someMethod= function(){..............}
克隆对象:{
function clone(origin){
return Object.assigmn({},origin)//只能克隆它本身的值,不能克隆他的继承值。
}
function clone(){
let originProto = Object.getPrototypeof(origin);
return Object.assign(Object.create(),origin)
}
5.Object.setPropotypeOf(),Object.getPrototypeof()
设置原型对象,获取原型对象
6.对象的扩展运算符
let{x,y,...z} = {x:1,y:2,a:3,b:4};
x//1
y//2
z//{ a:3,b:4 }(z属于Reset参数,reset参数不会复制继承远行对象的属性)
let z ={a:3,B:4}
z._proto_ = {c:5}
let n = {...z}
n //{a:3,B:4}只能复制自身的属性,不能复制原型上的属性
网友评论