我如何遍历在JavaScript中使用getter的对象

伊利里克斯

这是对象定义:

var Vars = new function(){
    var that = this;
    this.assign = function(name) {
        var realValue = undefined;
        Object.defineProperty(that, name, {
            configurable: true,
            get: function() {
                //console.log("Get");    do something...
                return realValue; 
            },
            set: function(v) {
                //console.log("Set");    do something...
                realValue = v;
            }
        });
    }
    this.destroy = function(name) {
        return delete that[name];
    }
};

但是我发现我无法按照我想要的方式遍历此对象。

>> Vars.assign("key")
<- undefined
>> Vars.key = 1
<- 1
>> Vars.key
<- 1
>> for(var i in Vars){console.log(i);}
assign 
destroy 
<- undefined

当我遍历对象时如何到达“键”?

克里斯托斯

您必须在属性描述符中明确声明您的属性是可枚举的。默认值为false。这就是为什么使用时没有得到它的原因for..in根据MDN

for ... in语句以任意顺序遍历对象的可枚举属性。对于每个不同的属性,可以执行语句。

关于枚举属性,因为它是说在这里

数不清的

当且仅当在枚举相应对象的属性时显示此属性时,才返回true。默认为false。

var Vars = new function(){
    var that = this;
    this.assign = function(name) {
        var realValue = undefined;
        Object.defineProperty(that, name, {
            configurable: true,
            // This is the missing line
            enumerable: true,
            get: function() {
                //console.log("Get");    do something...
                return realValue; 
            },
            set: function(v) {
                //console.log("Set");    do something...
                realValue = v;
            }
        });
    }
    this.destroy = function(name) {
        return delete that.Local[name];
    }
};
Vars.assign("key");
for(var i in Vars){console.log(i);}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 JavaScript 中使用 for 循环遍历对象数组

如何在JavaScript中使用特定的键和值遍历JSON对象?

如何遍历JavaScript对象?

如何遍历 JavaScript 对象?

如何遍历对象-JavaScript

我如何访问 javascript 对象上的 setter 和 getter?

如何在Paw中使用动态键遍历对象?

如何在JavaScript中使用setter和getter,遇到错误

我如何使用forEach在数组内部遍历这些对象?

如何在Javascript中使用递归函数遍历树

如何在JavaScript中使用“点击”事件遍历数组?

如何遍历JavaScript数组/对象

如何遍历或枚举JavaScript对象?

如何遍历此javascript对象?

如何遍历JavaScript对象的键

如何遍历嵌套对象以使用 vanilla JavaScript 查找值?

如何使用 forEach 遍历 Javascript 数组对象以创建元素?

如何遍历对象数组并使用 Javascript 求和特定属性

如何在 Javascript 中使用嵌套对象?

如何在javascript中使用对象数组

在 js 对象中使用 getter 函数,为什么我的代码不起作用?

无法在 ReactJS 中使用 map 遍历对象

如何使用 For IN 或 FOR OF 遍历 Array 对象

如何在 JavaScript 中使用单个对象创建多个对象?

如何创建 JavaScript 标签以遍历 JavaScript 对象?

在JavaScript中使用“ this”对象

JavaScript 在defineProperty 中使用原始的getter/setter

如何在python中使用apply函数和lambda循环遍历json对象?

如何在R中使用map遍历对象以创建一系列gt表