JS 物件扩充的修改与调整 DAY69

物件扩充的修改与调整

是针对物件本身(请牢记!!)

preventExtensions (防止扩充)seal (封装)Freeze (冻结)

preventExtensions 防止扩充

var family = {    a: 1,    b: 2,    c: {},}// preventExtensions 防止扩充console.log('是否可被扩充',Object.isExtensible(family)); // trueObject.preventExtensions(family);   console.log('是否可被扩充',Object.isExtensible(family)); // false// getOwnPropertyDescriptor 观看物件属性的特徵为何console.log('family a 的属性特徵' , Object.getOwnPropertyDescriptor(family,'a'));// 特徵皆为true// 调整属性family.a = 'a';// 新增属性family.d = 'a'; // 无法新增// 巢状属性调整family.c.a = 'ca';// 调整特徵Object.defineProperty(family,'a',{    configurable: false,})// 删除delete family.b;// 结果console.log(family);console.log('family a 属性特徵(尝试修改后)', Object.getOwnPropertyDescriptor(family,'a'));

seal 封装

var family = {    a: 1,    b: 2,    c: {},}// seal 封装// 物件物件属性无法新增删除,也无法重新配置特徵,但是可以调整目前属性值// seal 是 preventExtensions 加上 上述的限制console.log('是否可被扩充',Object.isExtensible(family)); // trueObject.seal(family);   console.log('是否可被扩充',Object.isExtensible(family)); // falseconsole.log('是否被封装',Object.isSealed(family)); // trueconsole.log('family a 的属性特徵' , Object.getOwnPropertyDescriptor(family,'a'));// 这里 configurable 为 false// 调整属性family.a = 'a';// 新增属性family.d = 'a'; // 无法新增// 巢状属性调整family.c.a = 'ca';// 调整特徵  (无法调整 writable 一样为true)Object.defineProperty(family,'a',{    writable: false,})// 删除 (无法删除)delete family.b;// 结果console.log(family);console.log('family a 属性特徵(尝试修改后)', Object.getOwnPropertyDescriptor(family,'a'));

freeze 冻结

var family = {    a: 1,    b: 2,    c: {},}// freeze 冻结// 物件加上 seal , 并且无法调整值Object.freeze(family);   console.log('是否可被扩充',Object.isExtensible(family)); // falseconsole.log('是否被封装',Object.isSealed(family)); // trueconsole.log('是否被冻结',Object.isFrozen(family)); // trueconsole.log('family a 的属性特徵' , Object.getOwnPropertyDescriptor(family,'a'));// 这里 configurable writable 为 false// 调整属性family.a = 'a';// 新增属性family.d = 'a'; // 无法新增// 巢状属性调整family.c.a = 'ca';// 调整特徵  (无法调整 会跳出错误)// Object.defineProperty(family,'a',{//     writable: true,// })// 删除 (无法删除)delete family.b;// 结果console.log(family);console.log('family a 属性特徵(尝试修改后)', Object.getOwnPropertyDescriptor(family,'a'));

那今天的介绍就到这里
若有任何问题 或 内容有误
都可以跟我说唷http://img2.58codes.com/2024/emoticon41.gif


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章