gpt4 book ai didi

javascript - 为什么通过 Object.defineProperty 添加的属性在 Javascript 中不可迭代

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:07:11 26 4
gpt4 key购买 nike

考虑这段代码:

var a = {
get aa() {
return 'aa';
}
};

Object.defineProperty(
a,
'bb',
{
get: function() {
return 'bb';
}
}
);

for(p in a) {
sys.puts(p + ': ' + a[p]);
}

输出是:

aa: aa

但是属性 bb 是完全可以访问和工作的。

为什么 'bb' 在 for..in 循环中不可见?

最佳答案

您必须将enumerable 设置为true

(您也可以试试 getOwnPropertyNames() ,但我不确定它的跨浏览器性能如何。)

var a = {
get aa() {
return 'aa';
}
}, arr = [];

Object.defineProperty(
a,
'bb',
{
get: function() {
return 'bb';
},
enumerable: true
}
);

for(p in a) {
arr.push(p + ': ' + a[p]);
}
alert(arr.join("\n"));

Try it out with this jsFiddle

关于javascript - 为什么通过 Object.defineProperty 添加的属性在 Javascript 中不可迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3955905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com