function foo() {
if (arguments.callee.self)
return arguments.callee.self;
arguments.callee.self = this;
//do sth
}
我明白什么时候这样称呼它:
var a = foo();
当 foo 被执行时,arguments.callee 就是 foo 本身。所以它将这个传递给未定义的变量self。下次当另一个函数调用 foo 时,它会返回 this。显然这会起作用。
当它被这样调用时,事情似乎变得更加棘手:
var b = new foo();
我认为 js 引擎会创建另一个 foo 实例并执行其代码。但它似乎将 this 引用传回,因为 self 已经定义,就像 foo 的同一个实例一样。那么“新”在这里实际上做了什么?