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) ------------------>-------+

因此,您有两个变量指向同一个对象,并且在调用匿名函数后该对象仍然存在。

于 2012-04-19T06:45:04.820 回答