Javascript 使用";声明变量之间有什么区别;新";还是不用它?

Javascript 使用";声明变量之间有什么区别;新";还是不用它?,javascript,oop,function,object,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(); test1和test2看起来一样,但我的问题是它们之间是否有什么不同?嗯。。你能用第一种方法吗 之所以使用术语“new”

我有一段代码:

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

嗯。。你能用第一种方法吗


之所以使用术语“new”,是因为您正在声明
对象的
新实例。不是一个变量

嗯。。你能用第一种方法吗


之所以使用术语“new”,是因为您正在声明
对象的
新实例。不是一个变量

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

如果不使用
new
将引用全局对象并关闭全局命名空间(ES3),或者它将是
未定义的
(ES5)



在这里的特定代码片段中,这并不重要,因为您仍然从
Test()
返回一个新对象。它将始终被使用并分配给
test1
test2
new
对于从构造函数实例化非常有用。这基本上意味着,将形成一个新对象,其中包含构造函数中通过
this
引用的所有数据

如果不使用
new
将引用全局对象并关闭全局命名空间(ES3),或者它将是
未定义的
(ES5)


在这里的特定代码片段中,这并不重要,因为您仍然从
Test()
返回一个新对象。将始终使用并分配给
test1
test2