我有这段代码:
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();
test1
和test2
看起来相同,但我的问题是它们之间是否有任何不同之处?
答案 0 :(得分:2)
new
适用于从构造函数进行实例化。这基本上意味着,形成了一个 new 对象,该对象包含构造函数中通过this
引用的所有数据。
不使用new
,this
将引用全局对象并破坏全局命名空间(ES3),或者它将是undefined
(ES5严格)。
在此处的特定代码段中,无关紧要,因为您仍然会从Test()
返回新对象。这将永远使用并分配给test1
和test2
。
答案 1 :(得分:1)
嗯..你能以第一种方式做到吗?
您使用“新”一词是因为您声明了对象的new
实例。不是变量。