3

最近、最初の単純なjQueryプラグインを作成しました。誇りに思います。

http://jsfiddle.net/johnhoffman/wSeLY/1/

(function($) {
    $.fn.makeRed = function() {
        return this.each(function() {
            $(this).css("color", "#f00");
        });
    }
})(jQuery);

なぜそれが機能するのか疑問に思います。すぐに実行されるこの囲まれた関数にjQueryオブジェクトを渡します。

続いて、|$|ではありません その無名関数内のローカル変数に反対しますか?グローバルシングルトンjQueryオブジェクトをどのように変更しますか?

言い換えれば、$.fn.myFunctionNameオブジェクトに関数を追加するだけではありません| $ | 同封の関数にローカルですか?グローバルjQueryオブジェクトをどのように変更しmakeRed、スクリプトのグローバルスコープ全体で関数()をセレクターが使用できるようにしますか?

4

2 に答える 2

2

Javascriptのオブジェクトは参照によって渡されるため、関数内の更新はすべてjQueryオブジェクトで維持されます。あなたはそれを名前で参照しているだけです$

私はあなたが読むことを強くお勧めします:Javascript:それがすべてを説明する良い部分。

于 2012-04-19T06:43:15.480 に答える
2

|$|ではありません その無名関数内のローカル変数に反対しますか?

はい、$は関数内のローカル変数ですが、これは大きいですが、jQueryグローバルにアクセス可能なオブジェクトへの参照です。物事は次のようになります。

window.jQuery (global) ----->-----> { ... }
                                    ^
                                    |
$ (local) ------------------>-------+

したがって、同じオブジェクトを指す2つの変数があり、そのオブジェクトは無名関数が呼び出された後も存在します。

于 2012-04-19T06:45:04.820 に答える