我最近写了我的第一个简单的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
)可用于我脚本的全局范围内的选择器?
答案 0 :(得分:2)
Javascript中的对象通过引用传递,因此函数中的任何更新都保存在jQuery对象上。您只需使用名称$
来引用它。
我强烈建议您阅读:Javascript: The Good Parts它解释了所有这些。
答案 1 :(得分:2)
不是| $ |对象匿名函数中的局部变量?
是的,$
是函数中的局部变量但是,这是一个很大但是,它是对全局可访问的jQuery
对象的引用。事情看起来像这样:
window.jQuery (global) ----->-----> { ... }
^
|
$ (local) ------------------>-------+
因此,您有两个指向同一对象的变量,并且在调用匿名函数后该对象仍然存在。