0

我有一个名为 的对象Button_Objs,它的目的是保存我所有的Button对象。我在 my 中创建了一个函数,Button_Objs它遍历它的每个变量。这就是问题所在,我有一个if statement说:if (i typeof Button){}. 我这样做是为了只选择Button存储的对象。

这是这个的 JSFiddle:http: //jsfiddle.net/MichaelMitchell/vcZTR/15/

var Button_Objs = function() {
    this.getButtons = function() {
        var i;
        for (i in this) {
            if (type of i == Button) { //PROBLEM, also does not work with instanceof.

                document.getElementById('console').innerHTML += ( "button: " + i  + "<br />");

            }
        }
    };
};

我也试过instanceof了,可惜不行:(

4

1 回答 1

2

i typeof Button是无效的语法,type of i == Button也是如此。

当您使用for...in循环遍历对象时,循环变量将保存属性的名称,而不是值。您可以使用名称来获取值:

if(this[i] instanceof Button)

阅读有关for...in循环的更多信息(我建议查看 MDN 以了解 JS 基础知识)。


除此之外,我不明白为什么需要构造函数来为按钮创建容器。你可以只使用一个普通的对象:

var buttons = {};

// somewhere
buttons['button' + i] = new Button(...);

然后再次使用for...in循环迭代对象。

如果您实际上不需要名称(它们似乎只是某种枚举),为什么不使用数组呢?

var buttons = [];

// somewhere
buttons.push(new Button(...));

然后使用for循环遍历所有按钮。您甚至不必测试它们的类型。

于 2012-12-23T10:48:40.867 回答