在这个例子中使用new运算符的目的是什么?

时间:2015-12-09 17:03:38

标签: javascript

为什么要连续使用new运算符,如下例所示。

var x = 0;
function foo() {
    x++;
    this.x = x;
    return foo;
}
var bar = new new foo;
console.log(bar.x); //undefined

更新 实际上我一开始并没有注意到,但是当你这样做时:

var bar = new new foo; //you'll get `undefined` `undefined` returned

相反:

var bar = new foo; //you'll get `undefined` returned

更新 正如Bergi正确地指出你只会得到一个undefined ..对不起我一定没有足够的咖啡:)

1 个答案:

答案 0 :(得分:2)

  

在此示例中使用new运算符的目的是什么?

让你感到困惑。很多。

  

为什么要连续使用new运算符?

你永远不会,除非你想证明奇怪的代码仍然可以工作。虽然它需要一个更高阶的函数(返回另一个函数)而不是普通的构造函数。

好的,让我们不要那么奇怪:

var x = new   new Function("this.foo = 'bar';") ();
//          ^ notice the invisible parenthesis ^
x.foo; // bar