代码之家  ›  专栏  ›  技术社区  ›  Casey

原型javascript引用错误的常见原因

  •  0
  • Casey  · 技术社区  · 15 年前

    我不熟悉原型框架,对Javascript也相当陌生(很长一段时间以来,我一直在做繁重的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)));
    

    谢谢

    更新:我把getLabel函数从我的类中拉了出来,它工作得很好,这让我相信它在某种程度上与作为类的成员传递或计算的getLabel函数有关,而不是一个独立的函数。但还是不确定我做错了什么。

    3 回复  |  直到 15 年前
        1
  •  0
  •   Anthony    15 年前

    我的理解是(我承认,在面向对象编程方面是相当有限的),您不直接将方法作为函数调用。它们需要作为对象的方法调用。例如:

    getLabel(foo);
    

    如果getLabel是类的方法,则它修改对象。在您的示例中,您没有修改对象,那么getLabel实际获取标签的目的是什么?如果它被贴上 tee

    tee.getLabel();
    

        2
  •  0
  •   Matt Molnar    15 年前

    您需要以某种方式引用getLabel,classInstance.getLabel()或this.getLabel()。我看到您已经尝试了后者,所以我假设这段代码不是在getLabel()所属的同一个类中运行的?

        3
  •  0
  •   Casey    15 年前

    未定义方法的问题是由于调用它们的方法是从匿名函数调用的。将匿名函数绑定到(此)创建它的位置是可行的。

    当我看到Firebug中的“this”时,我意识到了这一点,并意识到它指向的是窗口而不是对象。