当前位置:  开发笔记 > 编程语言 > 正文

JQuery JavaScript设计:自我执行功能还是对象文字?

如何解决《JQueryJavaScript设计:自我执行功能还是对象文字?》经验,为你挑选了1个好方法。

我很好奇在构造封装代码块时是否有与JQuery相关的最佳实践.

通常,当我构建一个页面时,我喜欢将该页面中使用的函数封装在一个对象中.这允许我在构建应用程序时进行一些封装.没有什么比讨论一堆JavaScript文件更讨厌了

function doSomethingOnlyRelevantOnThisPage() {
    // do some stuff
}

我这使得设计混乱,并没有很好地封装功能.

通常在许多框架中,有一个标准用于执行此封装.

在Mootools中,他们喜欢Object Literal Notation:

var Site = {        
    // properties and methods
}

在YUI中,他们喜欢自执行函数表示法:

(function() { // properties and methods })()

第二个例子的好处是创建了一个闭包,从而允许你定义私有属性和方法.

我的问题是:任何JQuery爱好者都有创建这些干净封装结构的最佳实践吗?使用它们的理由是什么?



1> steve_c..:

由于我一直在使用jQuery一段时间,我已经决定了一个适合我的标准模式.

它是YUI模块模式与混合了一些jQuery插件模式的组合.我们最终使用自执行闭包模式.这在以下几个方面是有益的:

    它将代码保持在最低限度

    它强制将行为与表达分开

    它提供了一个阻止命名冲突的闭包

这就是它的样子:

;(function($) {        
    var myPrivateFunction = function() {
    };

    var init = function() {
        myPrivateFunction();
    };

    $(init);
})(jQuery);

我们意识到,分配函数执行的结果(类似于YUI模块模式)会暴露可能在表示代码中调用的代码.我们想要防止这种情况,所以这种模式适合.

当然,我们可以编写init方法内联,而无需为函数定义变量.我们同意明确定义init函数使代码更清晰.

如果我们想在页面/外部js文件之间共享功能会发生什么?我们简单地介绍了jQuery为扩展jQuery对象本身提供的现有机制 - 扩展函数.

如果函数是静态的,我们使用$ .extend,如果它们在包装集上运行,我们使用$ .fn.extend函数.

希望这有助于某人.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有