0

请帮我解决以下问题。

var test = new Object();
test.testInner = new Object();

test.testInner.main = function ()
{
   Hello();
}

function Hello()
{
  /**** Question: currently I am getting blank string with below code,
   **** Is there any way to get function name as "test.testInner.main" over here? */
  console.log(arguments.callee.caller.name);
}
test.testInner.main();
4

2 回答 2

1

test.testInner.main具有anonymous(无名称)功能的参考。您可以通过为它们分配名称来获取名称。修改后的代码:

var test = new Object();
test.testInner = new Object();

test.testInner.main = function main()
{
   Hello();
}

function Hello()
{
  /**** Question: currently I am getting blank string with below code,
   **** Is there any way to get function name as "test.testInner.main" over here? */
  console.log(arguments.callee.caller.name);
}
test.testInner.main();

jsfiddle

于 2012-10-09T11:59:49.180 回答
0

您可以在 Javascript 中设置函数的上下文。

function hello() { 
    console.log(this);
}
some.other.object = function() {
    hello.call(this, arguments, to, hello);
}

这将是 hello() 中的 some.other.object。

在您的示例中,调用者是 main,并且它没有 name 属性,因为它是匿名的。像这里:为什么 arguments.callee.caller.name 未定义?

此外,参数已被弃用,因此不应使用。

于 2012-10-09T12:00:34.063 回答