在原型中的js中获取调用方法名称

时间:2018-01-02 18:11:33

标签: javascript

我有一个名为 my 的方法,我从那里调用prototype .Iinside prototype我想从我调用的地方获取Method名称。下面的代码给出了所有函数代码。

var c = new Object();
c.hello = {}

c.hello.my = function(b) {
  var d = 1,
    c = 1;
  ap('#love').try()
}

x.prototype.try = function(h) {
  console.log(arguments.callee.caller);
}

以上程序提供 c.hello.my 中的所有代码。我们怎样才能得到函数的名称(即my)。如果可能的对象名称也像** c.hello.my *。

1 个答案:

答案 0 :(得分:1)

出于性能和安全方面的原因,这已经被弃用了。 Arguments.caller已经在大多数引擎上无法正常运行,而这一切都有效,因为它最终会调用function.caller,并且因为您没有处于严格模式。这不适用于模块,类定义内部以及未来的任何距离。

我之前遇到的情况是,我认为区分谁叫做一个功能会很好,但我最终会解决这个问题或者让它继续下去。如果需要对CURRENT函数表达式的引用,可以始终为其命名:

...
c.hello.my = function NAME_GOES_HERE(b) {
  var d = 1,
    c = 1;
  ap('#love').try()
}
...

当你以这种方式给函数表达式命名时(' x =函数F()'),该名称可能会或可能不会被引用为函数外部的变量,但它会被&#39 ; s保证在函数内部可用且有效。

如果某个功能有名称,您可以阅读function.name进行查看。请记住,文本名称在Javascript中几乎与在其他语言中一样有用。如果您希望将其用于调试目的,我建议您查看error.stack。这是非标准的,但跨浏览器的输出非常相似。

相关问题