如何将原型函数映射到具有该原型的对象数组?

时间:2013-07-11 02:23:13

标签: javascript

有没有办法在javascript中获取对象原型函数的句柄,并保证这是有问题的对象?当我想将一个正确类型的对象数组映射到这样一个函数时,我特别得到了PITA的情况。这最终成了Window。是的,我确实从正确的位置拉出了函数本身,但在内部它指的是'this'。我知道电话和申请,但不知道如何使用它们来处理这种情况。

是否缺少显式循环而不是使用map?奇怪的是,显然它与

并没有做同样的事情
object_with_the_prototype.some_prototype_function() 
如果我有

会这样做

[object_with_the_prototype].map(this.some_prototype_function)

怎么回事?

3 个答案:

答案 0 :(得分:0)

如果你的方法需要一个参数,那么它很容易。如果你需要多个参数,或者更重要的是,不是一个数字作为第二个参数(想想.toString),那么你可以使用bind来把它变成第一个参数:

"a,b,c".split(",").map( Function.call.bind(  "".big  )  );
你的代码中的

[object_with_the_prototype]
  .map( Function.call.bind( thisObject.some_prototype_function ) );

如果您的方法调用x(a,b,c),则绑定函数调用x(this,a,b,c)

答案 1 :(得分:0)

我认为你正在寻找这个:

[object_with_the_prototype].map(function(thisObject) {
    thisObject.some_prototype_function();
} );

答案 2 :(得分:0)

啊,我明白了。问题是,在数组的情况下,我错误地假设从对象到其原型链的正常步行会发生,尽管我给它一个显式函数来映射。我通过定义一个从数组中获取元素并通过该元素调用所需原型函数的函数来修复它。我改为映射到那个函数。

function do_one(element) {element.some_prototype_function()}
[object_with_prototype].map(do_one)