我正在查看jQuery source code,然后我看到他们使用foo.call(context)
代替context.foo()
。
例如 - 假设this
是他们使用的数组:
return slice.call( this );
而不是:
return this.slice();
有什么区别,这是做这些调用的首选方式(在性能方面)吗?
答案 0 :(得分:6)
问题是“foo”实际上可能不是“上下文”的属性。在这种情况下,唯一真正的选择是使用.call()
(或.apply()
,视情况而定)。
如果你的对象的“foo”属性是一个函数,那么就没有理由使用.call()
。
答案 1 :(得分:2)
除了@Pointy的回答,成员函数的直接调用似乎比Class.prototype.foo快得多: