プラグインの開発のためにjQueryのドキュメントを読んでいましたが、私は頭を抱くことはできません。 jQueryプラグインのアーキテクチャ構文 - この行は何を意味しますか?
$.fn.tooltip = function(method) {
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || ! method) {
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist on jQuery.tooltip');
}
問題の行
:return methods[method].apply(this, Array.prototype.slice.call(arguments,1));
私はすべてのJavaScriptのオブジェクトが呼び出しを()を継承し、適用()と私は、これら2つの関数の差延を理解していることを理解しています。私が理解できないことは、配列のプロトタイプです。 Arrayオブジェクトには既にslice()があります。なぜ、ここにプロトタイプが必要なのですか? call()は 'this'(コンテキスト)と引数のリストである2つの引数を取るので、私は上記の呼び出しがどのように動作するのか理解していません。誰かが私にこの行を理解させるのを助けることができるかarguments
オブジェクトがObject.prototype
から継承
おかげ
'arguments'は配列ではありません(独自の' slice() 'メソッドはありません)。このように呼び出された場合は' slice() 'は配列のようなオブジェクトです。 – kapa
それで、call()に引数の2番目の項目(arguments [1])が渡されていますか? – Nick
'1'は実際には' slice() 'のパラメータです。 – kapa