4

私はjQueryのソースコードを見ていましたが、foo.call(context)代わりにcontext.foo().
たとえばthis、使用する配列は次のとおりです。

return slice.call( this );

それ以外の:

return this.slice();

違いは何ですか?(パフォーマンスの観点から)これらの呼び出しを行うのが好ましい方法ですか?

4

2 に答える 2

6

問題は、「foo」が実際には「context」のプロパティではない可能性があることです。その場合、唯一の本当の選択は使用することです.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 に答える