你有没有看过JQuery 1.4源代码的内幕,并注意到它是如何以下列方式封装的:
(function( window, undefined ) {
//All the JQuery code here
...
})(window);
Run Code Online (Sandbox Code Playgroud)
我读过一篇关于JavaScript Namespacing的文章和另一篇名为" 一对重要的Parens "的文章,所以我知道这里发生了什么.
但我以前从未见过这种特殊的语法.在那undefined做什么?为什么window需要通过然后再次出现?
我正在查看backbone.js截屏视频中的优秀peepcode演示代码.在其中,骨干代码全部包含在传递jQuery对象的匿名函数中:
(function($) {
// Backbone code in here
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
在我自己的骨干代码中,我只是将我的所有代码都包装在jQuery DOM'ready'事件中:
$(function(){
// Backbone code in here
});
Run Code Online (Sandbox Code Playgroud)
第一种方法的优点是什么?这样做会创建一个匿名函数,然后立即执行jQuery对象作为函数参数传递,有效地确保$是jQuery对象.这是唯一的一点 - 保证jQuery绑定到'$'还是有其他理由这样做?
我正在研究Backbone和来自http://todomvc.com/的todo示例应用程序. 我注意到有三种方法可以在文件中启动代码:
$(function() {
// code here
});
$(function( $ ) {
// code here
});
(function() {
// code here
}());
Run Code Online (Sandbox Code Playgroud)
我不明白这些差异,何时我应该使用另一个.
我也看到一些人使用它来启动他们的代码:
$(document).ready(function(){
// code here
});
Run Code Online (Sandbox Code Playgroud)
从我所看到的,这是完整的写作方式吗?
以更一般的方式,我是否应该始终将我的javascript代码包含在每个文件中?
谢谢你的建议.