0

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

有没有办法使用显式循环而不是使用地图?奇怪的是,它显然没有做同样的事情重新“这个”

object_with_the_prototype.some_prototype_function() 

如果我有

[object_with_the_prototype].map(this.some_prototype_function)

怎么来的?

4

3 回答 3

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)

于 2013-07-11T02:27:27.013 回答
0

我想你正在寻找这个:

[object_with_the_prototype].map(function(thisObject) {
    thisObject.some_prototype_function();
} );
于 2013-07-11T02:28:34.107 回答
0

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

function do_one(element) {element.some_prototype_function()}
[object_with_prototype].map(do_one)
于 2013-07-11T02:41:50.663 回答