迭代所有成员的对象内的功能,对象
-
12-09-2019 - |
题
这将是极为方便,如果我可以这样做:
var MyObject = function(param1, param2, ... paramN)
{
this.var1 = stuff;
this.var2 = moreStuff;
.
.
.
this.varN = nStuff;
this.validate = function()
{
for(var current in this)
{
alert(current);
//validate all member variables (even this function I suppose)
}
};
};
然而,这并不 似乎 做什么我会想要的。我认识到,循环,最终将需要循环,它是母的功能(这也不令人惊讶的是,并未发生)。
这是不可能的,因为'这个'在第二功能,指的是第二种功能并不是第一个?或是关键词"这个"仅仅一项宣言,操作人员对公共部件而不是一个参考外的对象?
我想得到什么,我想这种方式是不可能的,但是有另一种方式我可以去约实现这一行为?
解决方案
我认为你正在试图获得该成员的值,并绕了错误的方式,使试试这个:
var MyObject = function() {
this.var1 = 'var 1 value';
this.var2 = 'var 2 value';
this.varN = 'var n value';
var self = this;
this.validate = function() {
for (var member in self) {
if (!self.hasOwnProperty(member) || typeof(self[member]) === "function") continue;
alert(self[member]);
}
};
};
var m = new MyObject();
m.validate();
要解释:所述环路检查第一如果该属性是一个用户定义的属性,而不是从Object对象继承。它还检查该部件不是函数(像验证())它然后警告成员的值。
在hasownproperty检查由Douglas Crockford的(JS的父亲)作为最佳做法遍历承包商,客人时推荐使用。
希望这有助于,
达科
编辑:忘了提self
- 我包括这一点,因为它的标准方式确保您这其实是你希望它是什么
其他提示
你怎么叫 validate
?
以下代码工作的现对我说:
var MyObject = function(){
this.var1 = 'stuff';
this.var2 = 'moreStuff';
this.varN = 'Stuff';
this.validate = function()
{
for(var current in this)
{
alert(current);
}
};
};
var m = new MyObject();
m.validate();
不隶属于 StackOverflow