为什么我的for循环不能处理我的Javascript属性?
我创建了此对象及其属性:为什么我的for循环不能处理我的Javascript属性?,javascript,ecmascript-5,Javascript,Ecmascript 5,我创建了此对象及其属性: var obj = {}; Object.defineProperty( obj, "value", { value: true, writable: false, enumerable: true, configurable: true }); var name = "John"; Object.defineProperty( obj, "name", { get: function(){ return name; }, set: fun
var obj = {};
Object.defineProperty( obj, "value", {
value: true,
writable: false,
enumerable: true,
configurable: true
});
var name = "John";
Object.defineProperty( obj, "name", {
get: function(){ return name; },
set: function(value){ name = value; }
});
然后我对它们调用for循环:
for ( var prop in obj ) {
console.log( prop );
}
根据我的教程,应该会产生以下结果:
value
name
但它只显示价值。为什么名字没有出现 在
defineProperty
中enumerable
的默认值为false
;不可枚举的属性不会显示在循环中…的中。(这就是enumerable
标志的要点。)如果您将enumerable:true
添加到第二个定义中,它将“修复”它
请参阅。因为名称属性未定义为可枚举,请将名称定义设置为
Object.defineProperty( obj, "name", {
enumerable: true,
get: function(){ return name; },
set: function(value){ name = value; }
});
它会出现的 请接受解决您问题的答案之一。这有助于其他用户将来遇到此问题时……)