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