我有一个“yesno”输入收音机。当用户单击yes时,将显示 yesDiv,当用户单击no时,将显示 noDiv。
为了实现这一点,我创建了对象myObject。
var myObject= {
init: function(config){
this.config=config;
this.config.InputRadio.bind('click',this.config,this.switchDiv);
},
switchDiv: function(ev){
self=ev.data;
if ($(this).val()==1){
self.divYes.hide();
self.divNo.show();
}else{
self.divYes.show();
self.divNo.hide();
}
}
}
myObject.init({
InputRadio:$("input[name=yesno]"),
divYes:$("#yesDiv"),
divNo:$("#noDiv")
});
这行得通,我知道我不能用它来引用方法'switchDiv'中的对象属性,因为'this'在函数内的范围。我在相关问题(引用自己的对象属性) 中找到了将this.config作为参数发送然后使用self=ev.data的解决方案。
但是现在我的问题是:每当我想从该对象的方法中访问对象自己的属性时,我必须将它们作为方法中的参数传递,这不是有点奇怪吗?难道没有更好的方法来声明对象以避免这种情况吗?