使用“new”声明变量或不使用变量之间有什么区别?

时间:2012-12-13 11:02:04

标签: javascript oop function object

我有这段代码:

function Test() {
  var i=0;
  return {
    foo : function() { console.log(++i); },
    bar : function(a) { i=i+a;console.log(i)} 
  }
}
var test1 = Test();
var test2 = new Test();

test1test2看起来相同,但我的问题是它们之间是否有任何不同之处?

2 个答案:

答案 0 :(得分:2)

new适用于从构造函数进行实例化。这基本上意味着,形成了一个 new 对象,该对象包含构造函数中通过this引用的所有数据。

不使用newthis将引用全局对象并破坏全局命名空间(ES3),或者它将是undefined(ES5严格)。


在此处的特定代码段中,无关紧要,因为您仍然会从Test()返回新对象。这将永远使用并分配给test1test2

答案 1 :(得分:1)

嗯..你能以第一种方式做到吗?

您使用“新”一词是因为您声明了对象new 实例。不是变量。