属性的高级特性
- 可写:writable :是否可设置该属性的值
- 可枚举 enumerable :for in 是否可枚举该属性
- 可配置 configurable :属性是否可删除和属性的特性是否可修改
定义属性的特性
Object.definedProperty(对象,属性名字符串,特性描述对象);
Object.definedProperties (对象,多属性特性描述对象);
Object.getOwnPropertyDescriptor( 对象, 属性名);
var obj = {
x: 1,
y: {
x : 1,
y : {
x : 2
}
}
}
Object.defineProperty(obj,'z',{
value: 'z',
writable: false,
enumerable: false,
configurable: true
})
for( var i in obj){
console.log(i);
}
Object.defineProperties(obj,{
z : {
value : 2,
writable : true,
enumerable : true,
configurable : false
},
c : {
value : 5,
writable : true,
enumerable : true,
configurable : false
}
})
Object.getOwnPropertyDescriptor(obj,'z');
属性值得操作
set : 设置属性的值
get : 获取属性的值
var obj = {
boy : 10,
girl : 8,
allmoney : 0
}
Object.defineProperty(obj,'onemoney',{
set : function(money){
this.allmoney = money * (this.boy + this.girl);
},
get : function(){
return this.allmoney;
}
})