我最近写了我的第一个简单的 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
) 可用于脚本全局范围内的选择器?
最佳答案
isn't the |$| object a local variable within that anonymous function?
是的,$
是函数中的局部变量,但是,这是一个很大的 but,它是对全局可访问的 jQuery
对象的引用。事情看起来像这样:
window.jQuery (global) ----->-----> { ... }
^
|
$ (local) ------------------>-------+
因此,您有两个指向同一个对象的变量,并且在调用匿名函数后该对象仍然存在。
关于javascript - jQuery 插件如何维护全局状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10222743/