javascript - 使用 `function.caller`

标签 javascript

两部分问题:

  1. 如何从对象方法获取function.caller
  2. 如何使用该值来实际调用函数。

示例:

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/

相关文章:

javascript - <Redirect/> 的正确使用

javascript - React 类组件 - 基于 props 的条件样式

javascript - TypeError : Service. functionName 不是函数

javascript - 全屏背景图像 + 旋转图像?

javascript - 与 session$sendCustomMessage 的 Shiny 和 JavaScript 交互

javascript - 减少两个 Canvas html 之间的空间

javascript - 哪个继承类称为函数?

javascript - 使用 Passport.js 获取 Facebook 个人资料的链接

javascript - 同步执行保存在变量中的 Promise

javascript - jQuery Datatables 过滤器外部表包装的问题