ES6 Object方法扩展的应用实例分析
本文实例讲述了ES6Object方法扩展的应用。分享给大家供大家参考,具体如下:
在ES6中针对对象的方法做了一些扩展和优化,下面简单总结下常用的方法
is方法判断两个对象是否全等
console.log(Object.is({},{}),{}==={});//false,false console.log(Object.is(NaN,NaN),NaN===NaN);//true,false console.log(Object.is(+0,-0),+0===-0);//false,true
assign方法用于对象属性的拷贝
如果两个参数,把第二个参数中可枚举的属性拷贝到第一个参数对象中,仅限于可枚举的属性,如果有多个参数,那么同样拷贝
varobj={}; varobj2=Object.assign(obj,{name:'Joh'},{age:10}); console.log(obj===obj2,obj);//true,{name:'Joh',age:10} console.log(Object.is(obj,obj2));//true
相同属性的覆盖拷贝
constDEFAULT_OPTIONS={ name:"Joh" }; functiontest(opts){ letoptions=Object.assign({},DEFAULT_OPTIONS,opts); console.log(options); } test();//{name:"Joh"} test({name:"Lily",age:10});//{name:"Lily",age:10}
Symbol属性同样拷贝
varskey1=Symbol('test'); varskey2=Symbol('test'); varobj={}; Object.assign(obj,{name:'Joh'},{age:10},{[skey1]:'Iamtest1'},{[skey2]:'Iamtest2'});//拷贝 //验证Symbol的拷贝成功 console.log(obj[skey1]);//Iamtest console.log(obj);//{name:"Joh",age:10,Symbol(test):"Iamtest1",Symbol(test):"Iamtest2"}
Object方法:keys,getOwnPropertyNames,getOwnPropertySymbols,getOwnPropertyDescriptor的应用
classA{ constructor(){ this.name='Joh'; } [Symbol('fullnameA')](){ } getName(){ } } classBextendsA{ constructor(){ super(); this.age=22; } [Symbol('fullnameB')](){ } getAge(){ } } B.prototype.getColor=function(){}; varb=newB(); //备注:只能获取【自身可枚举属性】,但得不到【原型链上的属性(比如方法)+Symbols属性】 console.log(Object.keys(b));//["name","age"] //备注:可获取【可枚举属性】,但得不到【原型链上的属性+Symbols属性】 console.log(Object.getOwnPropertyNames(b));//["name","age"] //使用keys怎么也得不到原型链上不可枚举的属性[通过语法糖创建的方法] console.log(Object.keys(B.prototype));//["getColor"] //使用getOwnPropertyNames传入prototype可以得到原型链上的属性 console.log(Object.getOwnPropertyNames(B.prototype));//["constructor","getColor","getAge"] //通过getOwnPropertySymbols可以得到自身Symbols属性,但得不到继承的Symbol属性 console.log(Object.getOwnPropertySymbols(B.prototype));//[Symbol(fullnameB)] //获取自身可枚举属性包括继承过来的,备注:通过class内部的语法糖创建的方法是不可枚举的,但是通过后期B.prototype.出来的是可枚举的 for(letkeyinb){ console.log(key);//依次输出name和age和getColor } //描述对象测试可枚举性 console.log(Object.getOwnPropertyDescriptor(B.prototype,'getColor')); console.log(Object.getOwnPropertyDescriptor(B.prototype,'getColor').enumerable);//true console.log(Object.getOwnPropertyDescriptor(B.prototype,'getAge').enumerable);//false
更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。