到目前为止,我只是把我所有的jQuery优点都放在了$(document).ready()
函数中,包括在某些用户交互中使用的简单函数。
但是那些不需要加载DOM文档或者只在之后调用的函数,也可以放在$(document).ready()
之外。例如,考虑一个非常简单的验证函数,例如:
function hexvalidate(color) {
// Validates 3-digit or 6-digit hex color codes
var reg = /^(#)?([0-9a-fA-F]{3})([0-9a-fA-F]{3})?$/;
return reg.test(color);
}
不过,该函数只能从$(document).ready()
函数内部调用。
最佳实践是什么(语法、速度);将这样的函数放在中,或者将放在文档就绪函数之外?
发布于 2010-04-15 20:54:10
把它放在里面,这样它就不会污染全局命名空间。由于JavaScript的作用域链,它还可以确保更快地解析函数名。
如果它是一个可重用的组件,就把它放在外面,这样你就可以很容易地把它移到一个单独的文件中,并从不同的上下文调用它。
由于您已经使用了JQuery,因此值得一提的是,在您的示例中,您可能希望在外部将hexvalidate
定义为JQuery plugin,然后在内部调用它。
发布于 2010-04-15 21:13:35
我认为你一开始就不应该使用任何“简单的函数”。在面向对象的javascript中,“函数”通常属于四种不同的类型之一:
中不可见-作为参数传递的函数常量
例如:
(function() { <- init closure
function helper1() { <- utility }
globalSomething = {
foobar: function() { <- method
xyz.replace(/.../, function() { <- constant })
}
}
)()
在你的例子中,'hexvalidate‘显然是Validator对象的一部分,反过来,它可以成为一个jQuery插件:
(function($) {
$.validate = {
hexColor: function(color) { ... your code }
more validators...
}
)(jQuery)
发布于 2010-04-15 20:54:15
将这些函数放在文档就绪函数中的一个优点是它们不会污染您的全局名称空间……缺点是,如果你在页面上的其他地方需要它们,它们将不可用。
https://stackoverflow.com/questions/2645344
复制相似问题