DDR爱好者之家 Design By 杰米
本文实例讲述了ES6 Object方法扩展的应用。分享给大家供大家参考,具体如下:
在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方法用于对象属性的拷贝
如果两个参数,把第二个参数中可枚举的属性拷贝到第一个参数对象中, 仅限于可枚举的属性,如果有多个参数,那么同样拷贝
var obj = {}; var obj2 = Object.assign(obj,{name:'Joh'},{age:10}); console.log(obj === obj2, obj); // true, {name:'Joh', age:10} console.log(Object.is(obj,obj2)); // true
相同属性的覆盖拷贝
const DEFAULT_OPTIONS = { name:"Joh" }; function test(opts) { let options = Object.assign({}, DEFAULT_OPTIONS, opts); console.log(options); } test(); // {name: "Joh"} test({name:"Lily",age:10}); // {name: "Lily", age: 10}
Symbol属性同样拷贝
var skey1 = Symbol('test'); var skey2 = Symbol('test'); var obj = {}; Object.assign(obj,{name:'Joh'},{age:10},{[skey1]: 'I am test1'},{[skey2]: 'I am test2'}); // 拷贝 // 验证Symbol的拷贝成功 console.log(obj[skey1]); // I am test console.log(obj); // {name: "Joh", age: 10, Symbol(test): "I am test1", Symbol(test): "I am test2"}
Object方法:keys,getOwnPropertyNames, getOwnPropertySymbols,getOwnPropertyDescriptor的应用
class A { constructor() { this.name = 'Joh'; } [Symbol('fullnameA')] () { } getName() { } } class B extends A { constructor() { super(); this.age = 22; } [Symbol('fullnameB')] () { } getAge() { } } B.prototype.getColor = function () {}; var b = new B(); // 备注:只能获取【自身可枚举属性】,但得不到【原型链上的属性(比如方法) + 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(let key in b) { 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程序设计有所帮助。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
更新日志
2024年11月25日
2024年11月25日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]