Object.defineProperty

428 阅读1分钟
var myObject = {};
Object.defineProperty( myObject, "a", {
value: 2,
writable: true,
configurable: true,
enumerable: true
} );
myObject.a; // 2
    1. Writable writable 决定是否可以修改属性的值。
    1. Configurable 只要属性是可配置的,就可以使用defineProperty(..) 方法来修改属性描述符:
      除了无法修改,configurable:false 还会禁止删除这个属性
    1. Enumerable 这里我们要介绍的最后一个属性描述符(还有两个,我们会在介绍getter 和setter 时提到) 是enumerable。
      从名字就可以看出,这个描述符控制的是属性是否会出现在对象的属性枚举中,比如说 for..in 循环。如果把enumerable 设置成false,这个属性就不会出现在枚举中,虽然仍 然可以正常访问它。相对地,设置成true 就会让它出现在枚举中。