ES6 对象的扩展

2017-10-16  本文已影响0人  _花

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}只能复制自身的属性,不能复制原型上的属性

上一篇 下一篇

猜你喜欢

热点阅读