我是原型框架的新手,对Javascript来说还是个新手(很长一段时间sicne任何沉重的javascript工作)。我已经定义了一个在其中调用另一个方法的类,并且我一直得到一个ReferenceError“getLabel未定义”。 getLabel是我试图调用的另一个类方法。这是我称之为的代码:
var title = new Element('td');
title.addClassName(label_class);
title.addClassName('scorecard_tee_title');
title.appendChild(new Element('span').update(getLabel(tee, true)));
我也尝试过使用this.getLabel,但无济于事。我猜我的班级有一个语法错误(这里太大了,不能放在这里),但找不到什么错误。
我应该检查什么?在使用Prototype时我是否应该记住这个错误的常见原因?
谢谢!
更新:我将getLabel函数从我的类中拉出来并且它工作正常,这使我相信它在某种程度上与getLabel函数相关,该函数被传递或作为类的成员进行评估而不是独立的功能。仍不确定我做错了什么。
答案 0 :(得分:0)
这是我的理解(我承认,在面向对象编程时非常有限),你不直接将方法称为函数。它们需要被称为对象的方法。例如:
getLabel(foo);
如果getLabel是类的方法,它会修改一个对象。在您的示例中,您没有修改对象,那么getLabel实际上是为什么获取标签?如果它的标签为tee
,那么您需要:
tee.getLabel();
但如果我错了,有人让我知道,我会删除它。
答案 1 :(得分:0)
您需要以某种方式引用getLabel,classInstance.getLabel()或this.getLabel()。我看到你已经尝试了以后所以我假设这个代码没有在getLabel()所属的同一个类中运行?
答案 2 :(得分:0)
导致未定义方法的问题是因为调用它们的方法是从匿名函数调用的。将匿名函数绑定到(this)它的创建位置。
当我在Firebug中查看'this'并意识到它指向Window而不是Object时,我意识到了这一点。