从对象数组中调用函数

时间:2012-02-19 19:38:05

标签: javascript

我正试图通过这个来调用函数:

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');”,它确定,但我如何调用函数?

3 个答案:

答案 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);

或某些功能将不确定。