在使用jQuery JavaScript的辅助功能和代码组织问题
-
22-07-2019 - |
题
我在使用的我的代码在我的程序的顺序的麻烦。现在我有一些document.ready(function() { } );
事情,有些事情在它外面的一面。每当我移动任何东西(组织或改善我的代码)我弄坏的东西,我猜,因为声明或访问级别(即document.ready(function {});
之外的东西无论是为了不能访问它里面的东西的。
任何人有任何见解,以里的东西应位于的javascript明智?
如果一切是document.ready(function() {});
内?结果有什么理由让document.ready(function() {});
以外的东西吗?结果是由外码document.ready(function() {});
人迹罕至中的代码?
解决方案
1。如果一切是内 的document.ready(函数(){});
没有,我认为的document.ready函数必须是唯一的初始化的事情,分配事件处理程序等。
2。没有任何理由, 外面什么 的document.ready(函数(){});
代码重用,和更好的代码的组织。
3。距离码 的document.ready(函数(){}); 由外码不可访问?
是,在的document.ready创建的变量和对象是从外范围不可访问。
其他提示
应该一切是的document.ready内(函数(){});
是,也不是。在大规模的JavaScript应用程序,我初始化我的主控制器转换成从该事件处理全局范围。但是,代码不需要等待DOM做好准备,具体是:代码,并不依赖于DOM 的。我认为这是相当直截了当。例如,我声明配置对象此事件处理程序以外的类,函数,等等。
是否有任何理由以具有的document.ready的之外的任何内容(功能(){});
当然,对于Reason的上面谈到。主要是,不要求DOM交互代码不应该等待的DOM加载,尤其是如果它可以异步地执行的DOM装载(例如:功能定义,配置对象,等)。
此外,不包括所有在一个事件处理程序代码的让事情更有条理,让你模块化代码,使用正确的设计模式等。
是的document.ready中的代码(函数(){});由外码不可访问?
再次肯定和否定。如果你把它声明为本地与var
那是肯定的,它是因为它是本地的事件处理程序的外部范围无法访问;否则,它是在全球范围内,并且是外部范围进行访问。下面是一个例子(这里托管: http://jsbin.com/uriqe )
<强>的JavaScript 强>
var foo = function() {
alert(global);
return false;
}
$(document).ready(function() {
global = "you can see me!?";
alert("global is initiated");
});
<强> HTML 强>
<body>
<p><a href="#" onclick="foo()">click me</a></p>
</body>
onclick
而非$(document).ready()
不显眼的方法事件附件被有意用来避免任何疑问/大约具有foo
访问参数经由封闭性global
。
编辑:我想我做到了前面句子清楚,但 onclick
用于故意避开全球范围和封闭性,但我不混淆提倡使用onlick
的 的当然这是一个不好的做法,你不应该使用它。