美文网首页
ES6 对象的扩展

ES6 对象的扩展

作者: _花 | 来源:发表于2017-10-16 11:23 被阅读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}只能复制自身的属性,不能复制原型上的属性

    相关文章

      网友评论

          本文标题:ES6 对象的扩展

          本文链接:https://www.haomeiwen.com/subject/ufftuxtx.html