什么';重构越来越多的javascript/jquery函数的好方法是什么?

什么';重构越来越多的javascript/jquery函数的好方法是什么?,javascript,jquery,refactoring,object,global-variables,Javascript,Jquery,Refactoring,Object,Global Variables,我正在做一个项目,在这个项目中,我们在mvc风格的项目上做了很多自定义javascript,尤其是jquery 唯一的问题是,我不断地添加越来越多的全局函数/变量,它们正在堆积。我有一些文件,但我不确定如何将一些内容分割成单独的文件 我曾考虑过将这些函数和全局变量组合成对象,但javascript中的对象语法对我来说似乎有点笨拙(因为缺少经典类)。不过,如果我有一个好的榜样可以效仿,也许我可以改变主意 如何处理全局javascript函数和变量开始像这样堆积的项目?将一组全局变量和函数堆积到单个

我正在做一个项目,在这个项目中,我们在mvc风格的项目上做了很多自定义javascript,尤其是jquery

唯一的问题是,我不断地添加越来越多的全局函数/变量,它们正在堆积。我有一些文件,但我不确定如何将一些内容分割成单独的文件

我曾考虑过将这些函数和全局变量组合成对象,但javascript中的对象语法对我来说似乎有点笨拙(因为缺少经典类)。不过,如果我有一个好的榜样可以效仿,也许我可以改变主意


如何处理全局javascript函数和变量开始像这样堆积的项目?

将一组全局变量和函数堆积到单个全局对象中的一种非常简单的方法:

// Awful pile of globally-scoped names
var foo = 1
var bar = 2
function go = function(){
    console.log('Yeehaw!');
}


// Instead, just dump everything into a global-level object
var MyApp = {
    foo: 1,
    bar: 2,
    go: function(){
        console.log('Yeehaw!');
    }
}  

// Now access stuff like this
console.log(MyApp.foo);
console.log(MyApp.bar);
MyApp.go();

对于“简单”的顶级变量和函数,我建议这样做。可以对此进行很多改进,但它们可能属于过早优化的范畴;这是一个伟大的第一步。

您可以像jquery.ui那样分解它们。。。按类别或按操作/控制

例:

effects.blind.js
effects.bounce.js
ui.accordion.js

他们能被分解成他们所处理的控制吗

或者他们做了什么


只是一些建议…

YUI theater上的Crockford视频是如何设置JavaScript名称空间的一个很好的例子。

如果您使用jQuery,组织代码的第一种方法是构建jQuery插件:

正如您提到的mvc,有各种javascript实现,但我不确定它们是否非常流行:jamal、javascript mvc、


非常干净的溶液。我将在javascript中使用这种方法+1是的。MyApp方法将通过“this”访问MyApp中的所有其他内容。MyApp之外的任何内容都将使用MyApp前缀而不是此前缀。也适用于由事件或计时器触发的任何事件。我认为JavaScript的对象语法不能合理地描述为黑客行为。如果说有什么区别的话,那就是语言中最优雅的部分。如果你的意思是,试图强迫学生上课是痛苦的,我完全同意你的看法。它是一种面向对象的语言,而不是基于类的语言。