如何更好地在面向对象的javascript函数中定义全局变量

时间:2012-03-20 01:38:17

标签: javascript global-variables

假设我有一个功能:

function test(){

//should I define global variable here
//like window.arr=new Array()?

}

//can I define here
//window.arr=new Array()?

test.prototype.method01=function(){
//or here:window.arr=new Array()?
}

在上述三种方式中哪一种更好?

4 个答案:

答案 0 :(得分:1)

如果它是全局的,你很可能想要在函数之外定义它。这是因为如果它是全局的,您希望任何/所有函数都可以访问它。

JavaScript被解释为它的来源。如果你在函数之外定义它,它将被声明为被解释,如果在函数内部调用它,它将被声明为函数被调用。

答案 1 :(得分:1)

一般来说,全局变量都是坏主意。你能做的最好的事情是尽量减少它的影响。创建一个全局变量,该变量将成为应用程序容器,例如:


var APP = {};

APP.my_array = [];

我建议您查看JavaScript: The Good Parts

答案 2 :(得分:0)

您可以定义全局变量,上面的情况都很好。

但最大的区别是你必须调用函数才能拥有该数组

除了第二种情况。

答案 3 :(得分:0)

如果你要定义一个全局变量(开头有点可疑,甚至全局变量应该是命名空间的)不要在难以追踪的地方做它 - 保持在顶层,没有缩进,所以很容易发现。