【问题标题】:What is the difference between declaring a variable using "new" or without using it?使用“new”或不使用它声明变量有什么区别?
【发布时间】:2012-12-13 11:02:03
【问题描述】:
我有这段代码:
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 看起来一样,但我的问题是它们之间是否有什么不同?
【问题讨论】:
标签:
javascript
oop
function
object
【解决方案1】:
new 适合从 构造函数 进行实例化。这基本上意味着,形成了一个 new 对象,该对象随后包含通过 constructor 中的this 引用的所有数据。
如果不使用 new,this 将引用 全局对象 并破坏全局命名空间 (ES3),否则它将是 undefined(ES5 严格)。
在您的特定 sn-p 中,这并不重要,因为您仍然从 Test() 返回一个 新对象。这将始终被使用并分配给test1 和test2。
【解决方案2】:
嗯..第一种方法可以吗?
您使用“新”一词是因为您声明了一个 Object 的 newinstance。不是变量。