首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jquery文档内部或外部的函数已就绪

jquery文档内部或外部的函数已就绪
EN

Stack Overflow用户
提问于 2010-04-15 20:52:12
回答 5查看 39.9K关注 0票数 59

到目前为止,我只是把我所有的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()函数内部调用。

最佳实践是什么(语法、速度);将这样的函数放在中,或者将放在文档就绪函数之外?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-04-15 20:54:10

把它放在里面,这样它就不会污染全局命名空间。由于JavaScript的作用域链,它还可以确保更快地解析函数名。

如果它是一个可重用的组件,就把它放在外面,这样你就可以很容易地把它移到一个单独的文件中,并从不同的上下文调用它。

由于您已经使用了JQuery,因此值得一提的是,在您的示例中,您可能希望在外部将hexvalidate定义为JQuery plugin,然后在内部调用它。

票数 72
EN

Stack Overflow用户

发布于 2010-04-15 21:13:35

我认为你一开始就不应该使用任何“简单的函数”。在面向对象的javascript中,“函数”通常属于四种不同的类型之一:

  • 构造器或者一个匿名的'init‘闭包--用于构造对象。唯一允许为全局
  • 方法的函数类型-是某个object
  • 实用工具的一部分的函数-构造函数/方法的内部函数,在

中不可见-作为参数传递的函数常量

例如:

 (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)
票数 10
EN

Stack Overflow用户

发布于 2010-04-15 20:54:15

将这些函数放在文档就绪函数中的一个优点是它们不会污染您的全局名称空间……缺点是,如果你在页面上的其他地方需要它们,它们将不可用。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2645344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档