gpt4 book ai didi

javascript - 在 jQuery 中的 Javascript 中定义函数

转载 作者:行者123 更新时间:2023-11-29 10:24:57 26 4
gpt4 key购买 nike

我在专有网站上工作,遇到了一些问题。我将 jQuery 与原型(prototype)一起使用,并且已经正确命名空间,因此在这个问题中假设您可以使用 $ 或 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() {
}

现在这都是伪代码,您可以假设这些函数是有效的并且其中包含有效代码。最近我在做一些调试,我的一个在 document.ready 中声明和调用的函数说它是未定义的。我将它移到了 document.ready 之外,然后一切又恢复正常了。

我主要是想更好地理解函数启动/调用的顺序,所以我的问题是什么时候在 document.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);
});

该模式(有些人称之为“方法模式”)创建了一个封闭的函数/对象,它还保证您的命名空间内的私有(private)成员变量,只能通过 getter 函数从外部访问。

这实际上只是一个非常基本的示例,您可以将这个想法和模式推向扩展,这非常好,也是一件好事 (IMO)。

Douglas Crockford 的“Javascript:The Good Parts”是一本经常被命名和推荐的关于这方面的好书。

关于javascript - 在 jQuery 中的 Javascript 中定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3620822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com