javascript对象-无法访问的方法

javascript对象-无法访问的方法,javascript,object,Javascript,Object,我有一个javascript对象和一些方法,其中一些方法相互引用。在某些情况下,这些方法是未定义的,而不考虑使用关键字“this”。我不知道该怎么办。下面是我的对象的一个片段。在onClickMngLinksBtn方法中访问时,当单击带有onClickMngLinksBtn事件绑定的按钮时,方法getContent()将变为未定义。当通过以下方式访问时,同样的方法也可以正常工作: InLineLinksObj.getContent() 我希望解决方案是javascript中对象的基础。非常感

我有一个javascript对象和一些方法,其中一些方法相互引用。在某些情况下,这些方法是未定义的,而不考虑使用关键字“this”。我不知道该怎么办。下面是我的对象的一个片段。在onClickMngLinksBtn方法中访问时,当单击带有onClickMngLinksBtn事件绑定的按钮时,方法getContent()将变为未定义。当通过以下方式访问时,同样的方法也可以正常工作:

InLineLinksObj.getContent() 
我希望解决方案是javascript中对象的基础。非常感谢您的帮助

function InLineLinks(formController, fieldController) 
{
   ....

    this.getContent = function(){    
        var field = this.getFieldController().getCustomFieldByName(this.content_field); 
        if(field){
            return field.getValue();            
        }
        return null;
    };

    this.onClickMngLinksBtn = function(){  
        var links = [];
        var txt = this.getContent();  
    }   
    ....  
}
有关javascript中的作用域和
this
关键字的说明,请参见、或其他许多地方。本质上

当您的方法由DOM事件触发时,所有者是被单击(或鼠标悬停等)的窗口或HTML元素,而不是包含的对象

function InLineLinks(formController, fieldController) {
    var self = this;
    ....

    self.getContent = function(){    
        var field = self.getFieldController().getCustomFieldByName(self.content_field); 
        if(field){
            return field.getValue();            
        }
        return null;
    };

    self.onClickMngLinksBtn = function(){  
        var links = [];
        var txt = self.getContent();  
    }   
    ....  
}
在您的例子中,一个简单的解决方法是定义第二个变量
self
,它将保留对包含对象的引用

function InLineLinks(formController, fieldController) {
    var self = this;
    ....

    self.getContent = function(){    
        var field = self.getFieldController().getCustomFieldByName(self.content_field); 
        if(field){
            return field.getValue();            
        }
        return null;
    };

    self.onClickMngLinksBtn = function(){  
        var links = [];
        var txt = self.getContent();  
    }   
    ....  
}

按照您的方式,
InLineLinks
是一个构造函数,
getContent
是其实例的一种方法

然后,您必须实例化
InLineLinks
以访问
getContent

new InLineLinks().getContent()

这些方法的上下文是什么?哪些上下文是未定义的?它们的定义是什么?请举例。InLineLinks对象被创建,按钮在内容加载到“document ready”后被添加。太棒了!谢谢!