为什么要连续使用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
..对不起我一定没有足够的咖啡:)
答案 0 :(得分:2)
在此示例中使用
new
运算符的目的是什么?
让你感到困惑。很多。
为什么要连续使用new运算符?
你永远不会,除非你想证明奇怪的代码仍然可以工作。虽然它需要一个更高阶的函数(返回另一个函数)而不是普通的构造函数。
好的,让我们不要那么奇怪:
var x = new new Function("this.foo = 'bar';") ();
// ^ notice the invisible parenthesis ^
x.foo; // bar