-1

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

有人会这么好心并帮助我吗?我一直很难受。

我还想到了一个简单的解决方案,其中对象 obj 创建所有其他对象,但似乎效果不佳......

4

1 回答 1

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
*/
于 2013-09-30T19:02:26.760 回答