enumerabl,configurable,writable,value
(function(){
'use strict';
var point={x:1,y:2,z:3};
Object.defineProperty(point,'x',{
enumerable:false,//对象属性是否可枚举
configurable:false //对象属性是否可配置,不能删除,注意值是可以修改的
});
delete point.x;//x属性不可配置,所以x属性没有被删除,在严格模式下会抛出错误,非严格模式忽略
console.log(point);
})();
var me = {
name: "xiaowtz"
};
//定义单个属性
Object.defineProperty(me, "name", {
value: "xiaowtz changed",
enumerable: true,
configurable: false,
writable: false
});
delete me.name; //name不可配置,无法删除
//定义多个属性
Object.defineProperties(me, {
age: {
value: 18 //writable,enumerable,configurable没有明确说明,默认false
},
hobby: {
value: [1, 2, 3],
configurable: false
}
});
var desc = Object.getOwnPropertyDescriptor(me, "age");
console.log(me, desc);