使用var与函数声明javascript对象有什么区别?

时间:2010-10-19 14:55:24

标签: javascript function oop object var

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

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

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

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

两者之间的(非主观)差异是什么?是否有正式的正确方式和错误的方式?

3 个答案:

答案 0 :(得分: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";

答案 1 :(得分: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() {}

答案 2 :(得分:0)

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

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

当我们不使用var时,它被声明为全局函数,并且可能发生碰撞。因此,始终建议在变量赋值之前使用“var”。如果需要,请使用匿名函数进行关闭。