我有一个名为 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 *。
答案 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。这是非标准的,但跨浏览器的输出非常相似。