从Chrome 17开始,对于绑定函数,arguments.callee.caller似乎为null:
function a() {
this.test = function() { console.debug('*** ' + arguments.callee.caller); };
this.test(); // This prints the function
this.bound = this.test.bind(this);
this.bound(); // This prints null
}
用于一致行动的绑定和非绑定函数,但不再是。
这是预期的行为吗?
答案 0 :(得分:1)
也许这不是错误。你可能会注意到这一点:
If the function f was invoked by the top level code, the value of f.caller is null, otherwise it's the function that called f.
MDN
当你在函数a中使用它时,'this'
表示DOMWindow
。因此,当您将绑定函数绑定到this
时,顶级代码会调用绑定函数。它返回null
。
愿它有所帮助。 rdtriny。
答案 1 :(得分:1)
arguments.callee
和公司已被弃用。他们在严格模式下抛出错误。我的猜测是,他们正在逐步淘汰更新版本的Chrome。但我无法证实,因为我还在16岁。