Jquery插件语法解释?
我见过 jQuery 中的一些插件代码,
其中之一是重载 jQuery 中的 addClass 方法(示例:当您 addClass 时 - 调用 myfunction ())。
(function(){
var originalAddClassMethod = jQuery.fn.addClass;
jQuery.fn.addClass = function(){
// Execute the original method.
originalAddClassMethod.apply( this, arguments );
// call your function
// this gets called everytime you use the addClass method
myfunction();
}
})();
我不明白的事情:
他为什么要创建一个闭包?
我可以在普通函数内使用 var
的私有成员,并且它仍然仅对本地范围可见......所以?
你能向我解释一下吗?
他从这次关闭中赚到了什么?
我会理解,如果他将 $
符号发送给函数......但他没有
Ive seen some plugin code in jQuery
one of them is to overload the addClass method in jQuery (example : when you addClass - call myfunction ()).
(function(){
var originalAddClassMethod = jQuery.fn.addClass;
jQuery.fn.addClass = function(){
// Execute the original method.
originalAddClassMethod.apply( this, arguments );
// call your function
// this gets called everytime you use the addClass method
myfunction();
}
})();
the thing which i dont understand :
Why did he create a closure ?
I could use a private members inside a normal func with the var
and it still be visible to the local scope only.....so ?
can you explain that to me ?
what does he earn from that closure ?
I would have understand that if he sent the $
sign to the function ...but he didnt
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您在函数外部使用 var ,您仍然会创建一个全局变量(因为这是您所在的范围)。因此,您需要将所有代码包装在一个函数中以获得新的作用域。
事实上,他没有使用函数来确保
$
指向jQuery
而是一直使用jQuery
,这只能说明他在某种程度上是受虐狂并且想要可读性较差的代码。 ;)If you use
var
outside of a function you still create a global variable (because that's the scope you are in). So you need to wrap all code in a function to get a new scope.The fact that he did not use the function to ensure
$
points tojQuery
but usedjQuery
all the time instead just means that he was somehow masochistic and wanted less-readable code. ;)我认为添加了闭包,以便变量
originalAddClassMethod
不在全局作用域(或父作用域)中定义,并且对插件来说是私有的。你说:
这正是这里所做的:该函数是匿名的,但仍然是“正常的”。
I think the closure was added so that the variable
originalAddClassMethod
isn't defined in the global scope (or parent scope), and is private to the plugin.You said:
This is exactly what was done here: The function is anonymous, but still "normal".