我在Javascript中看到了这段代码:
Object.defineProperty(Pet.prototype, "petName", {
get: function () {
return this.petName;
},
set: function (petName) {
this.petName = petName;
},
enumerable: true,
configurable: true
});
这似乎是Javascript中属性的存取方法。但我不明白的是enumerable: true
和configurable: true
。我在网上搜索过,但我仍然不太明白Mozilla文档中的内容。我尝试将它们设置为false,看起来我仍然可以毫无问题地访问该属性,但似乎没有区别。
这里的enumerable
和configurable
属性究竟对访问器方法有何作用?如果有一个例子来说明他们的目的,那将会很好。
答案 0 :(得分:3)
请参阅MDN documentation for Object.defineProperty
:
<强>枚举强>
当且仅当此属性在此期间显示时才显示 枚举相应对象的属性。
即。它会显示在for ... in
循环中,Object.keys
等
<强>配置强>
当且仅当此属性描述符的类型为true时才为true 如果财产可能被删除,可能会被更改 相应的对象。
e.g。如果configurable
设置为false
,则您无法随后修改属性的描述符,可能会将其更改为非enumerable
或writable
另请参阅ES5 specification。