4

我正在查看jQuery 源代码,然后我看到他们使用foo.call(context)而不是context.foo().
例如 - 假设this他们使用的是数组:

return slice.call( this );

代替:

return this.slice();

有什么区别?它是执行这些调用的首选方式(就性能而言)?

4

2 回答 2

6

问题是“foo”实际上可能不是“上下文”的属性。在这种情况下,唯一真正的选择是使用.call()(或.apply(),视情况而定)。

如果您确实有一个具有“foo”属性的对象是一个函数,那么没有真正的理由使用.call().

于 2012-06-01T18:51:27.840 回答
2

除了@Pointy的回答,直接调用成员函数似乎比Class.prototype.foo快很多:

http://jsperf.com/javascript-foo-call-object-vs-object-foo

于 2012-06-01T19:16:02.747 回答