我正试图通过这个来调用函数:
var _coll = [new Obj('a', somefunction)];
function Obj(id, fn) {
this.id = id;
this.fn = fn;
}
var somefunction = (function () {
return {
innerFn: function (a) {
return a
}
}
})();
//this works
var test = new Obj('a', somefunction);
alert(test.fn.innerFn('test'));
//this is not working
loopArray();
function loopArray()
for (var it in _coll) {
for (var its in _coll[it]) {
var response = _coll[it].fn.innerFn('hey');
alert(response);
}
}
}
如果我将_coll更改为“var test = new Obj('a','somefunction');”,它确定,但我如何调用函数?
答案 0 :(得分:2)
因为在您定义_coll
时,尚未定义函数somefunction
。
如果将定义somefunction
的调用移到代码顶部,它就可以正常工作。
答案 1 :(得分:0)
首先,你使用for..in
循环访问数组,这是你永远不应该做的,但除此之外......
在第一个循环中,_coll
是数组,因此_coll[it]
将是该数组的元素。该元素是您的Obj
对象。你的第二个for..in
循环是完全没必要和错误的。当然你可以看到你做错了什么,因为你定义了一个从未使用过的its
变量......
答案 2 :(得分:0)
除了Kolink关于循环的说法,
你需要移动线
var _coll = [new Obj('a', somefunction)];
在声明某些功能之后,就像你用线
那样var test = new Obj('a', somefunction);
或某些功能将不确定。