我收到了以下代码:
function test () {
this.testFunction = function () {
//code to alert or return the string "testFunction"
}
}
var testVar = new test();
testVar.testFunction();
有没有办法找出属性的名称,未命名的函数被分配给该属性?无论我尝试与“来电者”和“被叫者”一起使用的方法都没有取得任何成功。
编辑: 我想要检索属性名称的原因是使用它来调试消息,我不必手动将属性名称传递给记录器。性能不是问题,因为这只是针对开发过程。
实际上,命名这个功能的建议是个好主意......我想。这是否有任何明显/众所周知的副作用,除了必须输入两次函数名称? :-P
此外,这让我想到在函数的开头添加注释,看起来像
/* $$NAME$$="testFunction" */
并且也可以解析 - 但是在FireFox(与IE不同)中似乎会修剪JavaScript注释,而我更喜欢使用FF进行开发。在使用“调用者”/“被调用者”属性时,是否还有一种方法可以在FF中显示/使用JS注释?
答案 0 :(得分:2)
您可以循环浏览对象实例中可用的所有内容,例如
function test() {
this.testFunction = function () {
for (var i in this) {
if (this[i] === arguments.callee) {
alert(i); // alerts 'testFunction'
}
}
}
}
var x = new test();
x.testFunction();
如果你想以递归方式调用函数,你可以简单地命名它
this.testFunction = function inner() {
inner();
}