この小さな jQuery プラグイン:
jQuery.fn.reverse = [].reverse;
それはどのように機能しますか?オブジェクトバインディングはどこにありますか - 関数を逆にする配列プロトタイプ? 舞台裏での仕組みがよくわかりません。いくつかの説明がいいでしょう。ご挨拶
この小さな jQuery プラグイン:
jQuery.fn.reverse = [].reverse;
それはどのように機能しますか?オブジェクトバインディングはどこにありますか - 関数を逆にする配列プロトタイプ? 舞台裏での仕組みがよくわかりません。いくつかの説明がいいでしょう。ご挨拶
[].reverse
Arrayプロトタイプの.reverse()
関数です。jQuery は、独自に定義する代わりにこれを利用しています。
[]
空の配列.reverse
を作成し、そこから関数を参照することは完全に有効です。
したがって、jQuery では$.reverse()
、jQuery オブジェクトに要素のコレクションが含まれている場合に実行できます。
jQuery.fn
のエイリアスですjQuery.prototype
。
したがって、このプラグインは、 でreverse
作成されたすべてのオブジェクトに Array の関数を追加しますnew JQuery()
。これは、 で作成されたコレクションの場合です$
。
そして、reverse
関数の仕様により、長さとインデックス付きプロパティを持つすべてのオブジェクトに適用されるため、機能します。これを使用してテストできます:
var a = {0:'a', 1:'b'};
a.length = 2;
console.log([].reverse.call(a)); // it works