如果我错了,请纠正我,但是每当我在程序中看到冗余的代码块时,我总是认为有一种更好的方式来思考/设计它。
拿出上下文无关的示例:
const ob = new SomeAjaxObject();
ob.on('load', () => {
doSomeThing(ob); //ob needs to be loaded to call this
})
问题是,如果在绑定
ob
事件时已经加载了load
,则doSomething
将永远不会触发。因此,我的解决方案如下:
const ob = new SomeAjaxObject();
if(!ob.loaded){ //This property is synchronous
ob.on('load', () => {
doSomething(ob);
})
}else{
doSomething(ob);
}
有没有冗余/重复代码的方法可以实现上述目的?
考虑到我无法控制
SomeAjaxObject
源代码 最佳答案
我不能确定地说,因为我不知道SomeAjaxObject的作用,但是我建议使用您自己的自定义类扩展类,并尝试覆盖onload方法。
class CustomAjaxObject extends SomeAjaxObject {
constructor() {
super()
}
onload() {
doSomething()
}
}
使用此方法可以覆盖父方法,当然我不能说
SomeAjaxObject
是内部使用onload
方法还是仅使用on('load')
。更好地尝试一下如果
SomeAjaxObject
内部调用onload
方法,则只需调用自定义类new CustomAjaxObject()