两部分问题:
- 如何从对象方法获取
function.caller
。 - 如何使用该值来实际调用函数。
示例:
foo = {
bar: function() {console.log(bar.caller);}
}
>> 语法错误:函数语句需要名称
示例2:
[bar.caller]();
?
提前致谢
最佳答案
您发布的代码的问题是 bar
在该匿名函数内没有任何意义。名称“bar”是分配给foo
的对象的属性名称。因此这工作得很好:
var foo = {
bar: function() {
console.log("Caller is: " + foo.bar.caller);
}
};
function x() {
foo.bar();
}
x();
该函数不需要名称;这是无关紧要的。为了获取 caller
属性,您需要对该函数的引用,该引用可以来自任何地方。因此这也是可行的:
var foo = {
bar: function() {
console.log("Caller is: " + this.bar.caller);
}
};
function x() {
foo.bar();
}
x();
因为当该函数作为 foo.bar()
调用时,this
的值将是“foo”对象。
关于javascript - 使用 `function.caller`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41926159/