0

我正在浏览这个演示文稿http://channel9.msdn.com/Events/MIX/MIX11/FRM08。Steve Anderson 使用了一个结构类似于下面的函数。

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

从他使用的函数创建对象

new o(123) 

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

o(123)

这两种方式有什么区别?

4

1 回答 1

2

代码没有多大意义。如果在没有new关键字的情况下使用该函数,它将创建并返回一个对象。如果它与new关键字一起使用,如示例中所示,将创建两个对象,并丢弃在函数内部创建的对象。

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

function o(p) {
  this.n = p;
}
于 2012-07-20T20:53:57.347 回答