Javascript 如何创建getter和setter

Javascript 如何创建getter和setter,javascript,extjs,Javascript,Extjs,我刚刚接到一个被解雇的extjs开发人员的项目。在他做的控制器里,我发现了像 this.getMyButton().toggle(true); this.getMyContainer().getLayout()... 因此,我只是在视图中添加了一个新表单(我的前同事应该在圣诞节前完成的事情之一),并尝试使用 this.getMyNewForm().loadRecord(someStore.getAt(0)); Chrome告诉我,this.getMyNewForm()未定义。但是在代码中我没

我刚刚接到一个被解雇的extjs开发人员的项目。在他做的控制器里,我发现了像

this.getMyButton().toggle(true);
this.getMyContainer().getLayout()...
因此,我只是在视图中添加了一个新表单(我的前同事应该在圣诞节前完成的事情之一),并尝试使用

this.getMyNewForm().loadRecord(someStore.getAt(0));
Chrome告诉我,
this.getMyNewForm()
未定义。但是在代码中我没有找到
getMyButton()
的定义

那是怎么回事?如何定义
getMyNewForm()

编辑:问题由文档()回答,但问题仍然存在

控制器中正确定义了Ref:

refs: [{
    ref       :'MyNewForm',
    selector  :'form[id=myNewForm]'
}]
并且在视图中正确定义了MyNewForm

    items: [{
        xtype: 'form',
        header:false,
        frame:false,
        id:'myNewForm',
        items: [{
但当我打电话时,它不起作用

 init: function() {
    this.control({
    });
    this.getMyNewForm().loadRecord(someStore.getAt(0));
 },

您应该在控制器的构造函数原型上定义该方法。JavaScript引擎抱怨的原因很简单,因为您没有定义getMyNewForm方法;这不是魔法,你不能调用随机方法

您说getMyButton方法不在代码中。那根本不可能。可能存在一种继承层次结构,您的控制器只是从构造函数继承,该构造函数在其原型上定义了该方法


请记住,即使您定义了getMyNewForm emthod,也应该返回定义loadRecord方法的“类”的实例;这可能是一个特定于extjs的“类”

,因为Evan Trimboli没有给出答案,让我来回答:


“您调用它太早了。在呈现任何视图之前会调用控制器的init。”

首先,您应该研究什么已经存在,什么没有,以及如何实现。您调用它太早了<在呈现任何视图之前调用控制器的代码>初始化。@Evantimboli Thx!我将调用放入window.afterrender,现在它可以工作了。你介意回答一下吗,这样我就可以把这个问题标记为已回答了我刚刚在文档中找到了它,它很神奇,但我的问题还没有解决。我现在已经定义了ref,但是该方法仍然不可用。