我正在专有网站上工作,遇到了一些问题.我将jQuery与原型一起使用,并且已正确为其命名空间,因此在此问题中,假定您可以使用$或jQ作为对jQuery的命名空间引用.
所以我有很多函数,一些将jQuery和javascript混合在一起,一些简单的javascript,仅一些jQuery.现在,当前有一些函数在document.ready jQuery函数中定义,而有些则在其外部定义,如下所示:
jQ(document.ready(function($) {
if ( ifConfig ) {
//page check, function calls here
fnc1();
fnc2();
fnc3();
fnc4();
}
function fnc1() {
//fnc code in here
}
function fnc2() {
//fnc code in here
}
}); //end document.ready
function fnc3() {
}
function fnc4() {
}
现在,所有这些都是伪代码,您可以假定函数有效并且其中包含有效代码.最近我在做一些调试工作,其中一个函数在文档中被声明和调用.ready说它是未定义的.我将其移出文档,准备就绪,一切再次正常.
我基本上是想了解函数如何被启动/更好地调用的顺序,所以我的问题是何时在文档中声明函数.准备好何时在外部声明它们?仅在该文档中调用它们时才声明内部吗?或者我应该总是只在该文档之外声明它们.
谢谢.
解决方法:
通常,您应声明&定义自己的名称空间,所有应用程序逻辑(包括函数/方法)都位于其中.这样,您就可以避免与网站上的其他脚本发生冲突,从而使代码更清晰,更易于维护.
var myapp = function(){
var foobar1 = null,
foobar2 = null,
foobar3 = null;
return {
getFoobar1: function(){
return foobar1;
},
getFoobar2: function(){
return foobar2;
},
setFoobar1: function(foo){
foobar1 = foo;
},
clickhandler: function(e){
alert('I am an event handler, and I am not anonymous');
}
// etc.
};
};
$(document).ready(function(){
var Application = myapp();
Application.getFoobar2();
$(document).bind('click', Application.clickhandler);
});
该模式(有人称其为“方法模式”)创建了一个封闭的函数/对象,该函数/对象还保证了命名空间内的私有成员变量,只能从外部通过getter函数进行访问.
这实际上只是一个非常基本的示例,您可以提出这个想法&模式扩展,非常好&一件好事(IMO).
关于该内容的一本好书,经常被命名和推荐,是道格拉斯·克罗克福德(Douglas Crockford)撰写的“ Javascript:好的部分”.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。