发现在Object中查找所有变量

时间:2012-12-23 10:44:20

标签: javascript oop

我有一个名为Button_Objs的对象,其目的是保存所有Button个对象。我在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,但唉它不起作用:(

1 个答案:

答案 0 :(得分:2)

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

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

if(this[i] instanceof Button)

Read more about the for...in loop(我建议您查看MDN以了解JS基础知识)。


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

var buttons = {};

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

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

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

var buttons = [];

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

然后使用for循环迭代所有按钮。你甚至不必测试他们的类型。