繁体   English   中英

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

[英]How can I map a prototype function to an array of objects that have that prototype?

在javascript中,有没有一种方法可以保证对象原型函数得到处理? 当我想将适当类型的对象数组映射到此类函数时,我特别遇到了PITA的情况。 最终成为Window。 是的,我确实从适当的地方提取了函数本身,但在内部它是指“ this”。 我了解电话申请的知识,但不知道如何使用它们来处理这种情况。

有没有一种方法可以使用显式循环而不使用map? 奇怪的是,它显然不像“ this”那样做相同的事情

object_with_the_prototype.some_prototype_function() 

如果我有的话会做

[object_with_the_prototype].map(this.some_prototype_function)

怎么会?

如果您的方法需要一个参数,那么这很容易。 如果您需要多个参数,或者更重要的是,不需要数字作为第二个参数(请考虑.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)那样调用

我认为您正在寻找:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM