7

我是一个困惑的新手。我在一个教程中读到你创建一个像这样的 javascript 对象:

function myObject() {
    this.myProperty = "a string";
    this.myMethod = function () {
        //Method code
    }
}

然后我在其他地方读到你创建了一个像这样的对象:

var myObject = {
    myProperty: "a string",
    myMethod : function () {
        //Method code
    }
}

两者之间的(非主观)区别是什么?官方有正确的方式和错误的方式吗?

4

3 回答 3

5

两种声明都是正确的,但它们具有不同的语义。

第一种类型的声明允许您创建对象的实例:

var t = new myObject();
// then use t
t.myProperty = "some value";

var otherT = new myObject();
otherT.myProperty = "some other value";

第二个几乎就像一个静态对象:

myObject.myProperty = "some value";
于 2010-10-19T14:59:35.283 回答
3

这是一个直接的比较...

function myObject() {

这在解析 JavaScript 时声明了函数......

var myObject = function () {

这在运行时声明函数。

如果你使用“var”方法,你的函数必须在使用前声明...试试这个例子。

myFunction(); // Works
myVarFunction(); // Boom

var myVarFunction = function () { alert("Hi"); };

function myFunction() { alert("Hi"); };

那么,如果您必须更加小心地使用“var”方法,为什么还要使用它呢?这一切都与范围有关......范围函数被认为更好。

更新:这里有一些很好的解释:

var functionName = function() {} vs function functionName() {}

于 2010-10-19T15:00:21.007 回答
0

两者之间的主要区别在于一个变量是局部变量,而另一个变量是全局变量。“var”基本上定义了变量的范围。

当我们将 var 添加到变量赋值时,javascript 会确保该变量被限制在分配给它的任何函数中,并且不会与另一个函数中的同名变量发生冲突。

当我们不使用 var 时,它会被声明为全局函数,并且可能会发生冲突。所以总是建议在变量赋值之前使用“var”。如果需要,请使用匿名函数进行关闭。

于 2013-10-19T21:55:45.653 回答