将对象存储在数组中并在Javascript中调用它们的方法

时间:2013-09-30 18:56:16

标签: javascript arrays object contain

我想要一个包含其他对象数组的Javascript对象obj,并且能够调用它们的方法。我还希望任何对象能够通过调用对象obj的特殊函数来注册到数组中,并将自身的引用作为参数传递。

请问有人这么善良并帮助我吗?我一直很难过。

此外,我想到了一个简单的解决方案,其中对象obj创建了所有其他对象,但这似乎不起作用......

1 个答案:

答案 0 :(得分:1)

也许你的意思是这样的

function Invoker(arr) {
    arr = arr.slice();
    arr.invoke = function (methodName) {
        var args = Array.prototype.slice.call(arguments, 1),
            i;
        for (i = 0; i < this.length; ++i)
            if (methodName in this[i])
                this[i][methodName].apply(this[i], args);
    };
    return arr;
}

var arr = [
    {foo: function (a, b) {console.log('foo', a);}},
    {foo: function (a, b) {console.log('bar', b);}}
];
var invkr = Invoker(arr);
invkr.invoke('foo', 'hello', 'world');
/*
  foo hello
  bar world
*/