我如何迭代在javascript中使用getter的对象
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了我如何迭代在javascript中使用getter的对象,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1503字,纯文字阅读大概需要3分钟。
内容图文
![我如何迭代在javascript中使用getter的对象](/upload/InfoBanner/zyjiaocheng/727/081a3a6739f445bea3001fbe190215bc.jpg)
这是对象定义:
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
The for…in statement iterates over the enumerable properties of an
object, in arbitrary order. For each distinct property, statements can
be executed.
关于可枚举财产,如here所述:
enumerable
true if and only if this property shows up during
enumeration of the properties on the corresponding object. Defaults to
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);}
内容总结
以上是互联网集市为您收集整理的我如何迭代在javascript中使用getter的对象全部内容,希望文章能够帮你解决我如何迭代在javascript中使用getter的对象所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。