物件扩充的修改与调整
是针对物件本身(请牢记!!)
preventExtensions 防止扩充
var family = {
a: 1,
b: 2,
c: {},
}
// preventExtensions 防止扩充
console.log('是否可被扩充',Object.isExtensible(family)); // true
Object.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)); // true
Object.seal(family);
console.log('是否可被扩充',Object.isExtensible(family)); // false
console.log('是否被封装',Object.isSealed(family)); // true
console.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)); // false
console.log('是否被封装',Object.isSealed(family)); // true
console.log('是否被冻结',Object.isFrozen(family)); // true
console.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'));
那今天的介绍就到这里
若有任何问题 或 内容有误
都可以跟我说唷
>>: 以Postgresql为主,再聊聊资料库 width_bucket() 的介绍
延续上篇还没介绍完的Arm Mali GPU系列解决方案,今天要来接着介绍Mali-G510 GPU...
以後不切这麽多表格了,搞死自己 发动产生订单只需要使用者UID一个参数,大略流程如下 藉由UID取得...
Introduction to embedded system Components and app...
准备工具 Visual Studio Code 或自己习惯的 IDE 可用的 AWS 帐户 目标 昨...
您的订阅是我制作影片的动力 订阅点这里~ 影片程序码 ## k prototype #### lib...