Object.defineProperty
定义物件属性,调整属性特徵(请牢记!!)
// 定义物件属性,调整属性特徵
Object.defineProperty
那特徵有哪些呢??
改值
var family = {
a: 1,
b: 2,
c: 3,
}
console.log(family); // 1 2 3
// Object.defineProperty(物件,属性,参数)
Object.defineProperty(family,'a',{
// 预设都为 true
value: 4,
writable : true,
configurable : true,
enumerable : true,
})
console.log(family); // 4 2 3
可否写入
var family = {
a: 1,
b: 2,
c: 3,
}
console.log(family); // 1 2 3
Object.defineProperty(family,'a',{
writable : false, // 不可写入
configurable : true,
enumerable : true,
})
family.a = 10; // 静默错误
console.log(family); // 因不可写入 所以一样为 1 2 3
可否被删除
var family = {
a: 1,
b: 2,
c: 3,
}
console.log(family); // { a : 1 , b : 2 , c : 3}
Object.defineProperty(family,'b',{
configurable : false, // 不可删除
})
delete family.a;
console.log(family); // { b : 2 , c : 3}
delete family.b;
console.log(family); // { b : 2 , c : 3}
可否被列举
var family = {
a: 1,
b: 2,
c: 3,
}
Object.defineProperty(family,'c',{
enumerable : false,
})
for(var key in family){
console.log('列举'+key); // 列举 a 列举 b
}
浅层保护
Object.defineProperty 只能做到浅层保护
var family = {
a: 1,
b: 2,
c: 3,
}
Object.defineProperty(family,'d',{
value: {},
writable : false,
})
family.d = 1;
console.log(family); // {} , d 一样为空物件
// 但禁止写入只限制 d 此属性
// 由於物件有传参考的特性 所以我们可以针对里面的值来做设定
var family = {
a: 1,
b: 2,
c: 3,
}
Object.defineProperty(family,'d',{
value: {},
writable : false,
})
family.d = 1;
console.log(family); // {} , d 一样为空物件
// 但禁止写入只限制 d 此属性
// 由於物件有传参考的特性 所以我们可以针对里面的值来做设定
family.d.a = 10;
console.log(family); // d: { a : 10}
一次定义大量属性
var family = {
a: 1,
b: 2,
c: 3,
}
Object.defineProperties(family,{
a:{
writable: false,
},
b:{
configurable: false,
},
c:{
enumerable: false,
}
})
那今天的介绍就到这里
若有任何问题 或 内容有误
都可以跟我说唷
<<: Get Support for Frozen FireStick Issue Dial 1877-943-5444
浅谈原始码 D3包装了Javascript的fetchAPI来撷取资料我们这里可以看到D3Js的原始...
在建立多个regression models後,我们常要选择一个指标来衡量模型好坏,今天来聊聊各个不...
昨天讲了时间序列的 4 大属性拆解,今天我们介绍三种时间序列资料的转换方式, 它的目的是能够让隐藏在...
Intent+Bundle Intent常用於画面的跳转,也就是Activity之间的切换,而在In...
昨天提到了一个奇怪的现象: byte num = 128; 如上撰写,你的IDE将会在128底下亮出...