Javascript 装饰对象

时间:2021-03-01 15:59:14

标签: javascript

我一直在使用以下方法来装饰我的 javascript 对象,但它有一个限制,我想知道是否可以就如何最好地处理它获得一些建议。

现在,我有以下内容;

export const ItemValidationDecorator = () => {

    const decorate = (entity) => {

        let _entity = {
            ...entity, ...{
                getSelected: () => {
                    return entity.selected;
                },

                hasSelected: () => {
                    return entity.selected != null;
                }
            }
        }
        return _entity;

    }

    return {decorate}
}


//I call it from various places in my application
const _obj = decorate(response.data);

我通常传入一个从 API 调用返回的 JSON 对象,以添加一些方便的方法,以便它们在整个应用程序中可用。挑战在于,这些装饰方法(getSelected、hasSelected)中的每一个都不知道彼此,所以我无法做类似的事情;

getSelected: () => {
    if (entity.hasSelected()) {
       return entity.selected;
    }

    return 'Some useful error code, or other logic';
}

我正在寻找一种方法,让这些方法以某种方式相互了解。这个逻辑有没有模式,或者有不同的方式来实现类似的东西?

0 个答案:

没有答案