大家好我在yui对象中有以下功能:
fun1: function (x){
....
if (condition)
this.fun1(x-1);
}
但我在调试模式中看到指令this.fun1(x-1)
引发了错误:
未捕获的TypeError:undefined不是函数
怎么解决呢?
答案 0 :(得分:2)
确保调用正确函数的最佳方法不是依赖于此而不是使用匿名函数。给你一个临时名称,并像这样调用它。
var obj ={
fun : function Q(a){
if(a>0){
return Q(a-1) + a;
}
return 0;
}
}
通常的做法是用一个大写字母调用它,如果你只用这个名字来调用它来递归。
尝试并始终为您的函数命名,因为这样更容易调试(函数名称将显示在调用跟踪中)
请注意,在javascript中使用递归可能会很危险,因为javascript没有尾调用优化,如果您不小心,可以轻松运行堆栈溢出。
答案 1 :(得分:0)
在用于定义对象的对象文字表示法中,避免使用它,因为这引用了窗口对象。相反,您可以使用您正在创建属性的对象名称。
var obj = {
testfunction: function() {
obj.testfunction();
}
};