0

我有这段代码:

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看起来一样,但我的问题是它们之间是否有什么不同?

4

2 回答 2

2

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

如果不使用 using newthis将引用全局对象并破坏全局命名空间(ES3),否则将是undefined(ES5 严格)。


在您的特定片段中,这并不重要,因为您仍然Test(). 这将始终被使用并分配给test1and test2

于 2012-12-13T11:04:41.027 回答
1

嗯..你能用第一种方法吗?

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

于 2012-12-13T11:04:34.917 回答