JS中带有变量更改链的方法链接

时间:2018-08-21 22:49:48

标签: javascript node.js methods chaining

因此,假设有一些变量。

let itemMinify = true;
let itemResize = true;

假设我们有一个处理输入的方法链。

something.minify().resize()....etc

是否有一种方法说明是否应根据变量将方法包括在链中?也就是说,如果itemMinify为假,您会看到类似....

something.resize()....etc

我知道,从技术上讲,您可以吐大量的if语句或switch语句以使其正常工作,但是我觉得必须要有一个更简洁的方法。

2 个答案:

答案 0 :(得分:0)

['minify', 'resize'].forEach(action => {something[action]()}应该可以解决问题。您可以按照自己的方式生成['minify', 'resize']数组

答案 1 :(得分:0)

有很多方法可以解决这个问题,但是我会认真考虑这里的模式。无论您尝试执行什么操作-代码中都应该清楚这一点。

方法链接没有什么问题,但是感觉就像您在试图强制执行某些操作。

似乎您的变量相关。我可能将这些分组到项目配置对象中。

const itemConfig = {
    minify: true,
    resize: false,
    ...so on
};

然后,您可以添加一些方法来遍历config对象并使用相同的键执行条件操作。由于这些对象具有依赖性,因此可以将它们组合到另一个对象中。 (这应该很容易让您知道)

const items = {
    minify: function() {
        // do some stuff here
    },
    ...so on
};

const itemConfigKeys = Object.keys(itemConfig);

itemConfigKeys.map(function(itemKey) {
    if (itemConfig[itemKey]) {
        const itemMethod = items[itemKey];
        itemMethod();
    }
});

我故意在这里变得有点含糊。关于如何解决问题,有很多事情要考虑。这是众多之一。