这将是极为方便,如果我可以这样做:

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();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top