JavaScript |格式化代码的正确方法

时间:2014-10-21 16:01:49

标签: javascript oop

我是JavaScript的新手并且有一个问题要问。创建新程序时,最好在全局变量/对象中创建所有函数,或者单独创建它们。

例如:

var register = {
    members: [],    
    Member: function(){ 
    },
    reset: function(){  
    },
    printMembers: function(){   
    },
    process: function(){    
    }
};

function init(){
    register.process();
};

window.onload = init();

或者像这样:

var members = [];

function Member(){
};
function reset(){
};
function printMembers(){
};
function process(){
};

function init(){
    process();
};

window.onload = init();

这可能是一个非常愚蠢的问题......

2 个答案:

答案 0 :(得分:2)

  

创建新程序时,最好在全局变量/对象中创建所有函数,或者将它们全部分开创建。

这是基于意见的,但我会给你一个很好的理由在全局对象中创建所有属性:你不会污染命名空间。这意味着,您不会创建许多全局对象,这些对象将是浏览器中全局对象(window)的属性。

如果您使用其他人的库,并且如果您和他都将创建全局对象,则HTML中稍后包含的脚本将覆盖在其他脚本中声明的具有相同名称的属性。

完成后,我建议你编写代码如下:

var app = {};

app.members = [];

app.Member = function(){};

app.reset = function(){};

app.printMembers = function(){};

app.process = function(){};

function init() {
    app.process();
};

window.onload = init;

另请注意,您应该window.onload = init,而不是window.onload = init()

区别:

  • 使用window.onload = init,您将onload中的window属性设置为init函数。稍后,当网页完成加载时,有人会要求window执行其onload属性,然后window会执行类似this.onload()的操作。

  • 使用window.onload = init(),您正在执行init并将onload的{​​{1}}属性设置为执行{{1}的返回功能。由于每个Javascript函数都返回一些内容(默认情况下为window),因此您将设置init。这不是你想要的。

答案 1 :(得分:0)

这是一种品味风格 - 有点像写一篇文章。最重要的是,任何人(或者你,从现在开始的六个月)都可以阅读你的代码并了解正在发生的事情。只关注功能,你自然会开始决定什么是合乎逻辑的。

(Eloquent Javascript)[http://eloquentjavascript.net//]也是一本关于这个主题的好书。