【问题标题】:Get Object Method Name From Within That Same Method从同一方法中获取对象方法名称
【发布时间】:2013-11-19 19:00:10
【问题描述】:

假设我有一个 obj:

var app = {}

以及对象内部的方法

app = {
   init: function () {
   }
}

如果不专门寻找'init',我将如何在init() 中获取方法名称'init'。这将是在方法名称可以是任何东西并且我不能依赖搜索特定名称的情况下。

app = {
   init: function () {
      //get 'init' method name here
   }
}
app.init();

我尝试使用 callee 但这会返回一个 空字符串

【问题讨论】:

    标签: javascript methods javascript-objects


    【解决方案1】:

    您可以使用命名函数表达式:

    app = {
      init: function init() {
        console.log(arguments.callee.name);
      }
    };
    
    app.init();  // => "init"
    

    请注意,在严格模式下禁止使用arguments.callee

    您在示例中所做的是将匿名函数表达式分配给对象上名为 init 的属性。除非您使用命名函数表达式,否则函数本身没有名称。

    【讨论】:

    • 谢谢,这么简单的事情,根本没想过要宣布它的名字。效果很好
    • 我以前使用过 arguments.callee.name ,但我一生都无法弄清楚为什么它会以空字符串的形式返回。没有宣布它正盯着我的脸。呃,需要走开一点。再次感谢您的回答!
    • 明确一点,这实际上是一个命名函数表达式,而不是函数声明。
    猜你喜欢
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多