我正在尋找jQuery source code,然後我看到他們使用foo.call(context)
而不是context.foo()
。
的示例 - 假設this
是數組他們使用:的javascript foo.call(object)vs. object.foo()
return slice.call(this);
代替:
return this.slice();
有什麼區別,是它喜歡的方式(在性能方面)做這些電話?
我正在尋找jQuery source code,然後我看到他們使用foo.call(context)
而不是context.foo()
。
的示例 - 假設this
是數組他們使用:的javascript foo.call(object)vs. object.foo()
return slice.call(this);
代替:
return this.slice();
有什麼區別,是它喜歡的方式(在性能方面)做這些電話?
問題是「foo」實際上可能不是「context」的屬性。在這種情況下,唯一真正的選擇是使用.call()
(或.apply()
,如適用)。
如果你確實有一個帶有「foo」屬性的對象,那是一個函數,那麼沒有真正的理由使用.call()
。
我經常爲「稍後」的簡單情況做到這一點。你永遠不知道,你可能會稍後使用'call' ...它已經在那裏。否則,在性能方面沒有區別。 –
除了@尖尖的答案,一個成員函數的直接調用似乎比Class.prototype.foo快得多:
我懷疑的性能有什麼。但我可能是錯的。 – Alexander
我相信這與你可以像傳遞一個對象這樣的函數有關,因此它可能有不同的名字。所以上下文可能沒有這個名字的功能。 –