我有一个名为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
,但唉它不起作用:(
答案 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
循环迭代所有按钮。你甚至不必测试他们的类型。