如果我错了,请纠正我,但是每当我在程序中看到冗余的代码块时,我总是认为有一种更好的方式来思考/设计它。

拿出上下文无关的示例:

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()

09-25 19:08