在这种情况下,新操作符是否需要创建新对象?

时间:2012-07-20 20:34:06

标签: javascript object

我正在阅读此演示文稿http://channel9.msdn.com/Events/MIX/MIX11/FRM08。史蒂夫安德森使用的结构与下面的结构类似。

function o(p) {
    return { n: p };
}

从函数o创建一个对象

new o(123) 

我想在这种情况下不需要新的运算符。你可以简单地写。

o(123)

这两种方式有什么不同?

1 个答案:

答案 0 :(得分:2)

代码没有多大意义。如果在没有new关键字的情况下使用该函数,则会创建并返回单个对象。如果它与new关键字一起使用,就像在示例中一样,创建了两个对象,并且放弃了在函数内创建的对象。

如果从函数返回对象,则不应使用new关键字。应该与new关键字一起使用的函数不返回对象,而是使用this关键字在已创建的对象中设置属性:

function o(p) {
  this.n = p;
}