gpt4 book ai didi

javascript - 在(自定义)枚举容器中注入(inject)函数

转载 作者:行者123 更新时间:2023-11-30 10:59:48 26 4
gpt4 key购买 nike

是否可以将以下代码转换为“枚举”对象容器:

/* enum.js */
let Enum = {};

Enum.Color = {
check: (value) => {
[
'red',
'green',
'blue',
].indexOf(value) !== -1;
},
};

Enum.Size = {
check: (value) => {
[
'big',
'medium',
'small',
].indexOf(value) !== -1;
},
};

export default Enum;

以一种极简的方式注入(inject)功能?

let Enum = {};

Enum.Color = { values: [
'red',
'green',
'blue',
],
},
};

Enum.Size = { values: [
'big',
'medium',
'small',
],
},
};

// here some code that inject the check function and
// other fcts to follows in every Enum property (lets say, with a values property inside)

export default Enum;

这个模型非常灵活,因为我可以将其他元数据添加到不同的枚举中。

enum的使用情况如下

import Enum from 'enum';
Enum.Size.check('medium');

最佳答案

我建议使用以下格式:

Enum.Color = {
red: "#F00",
green: "#0F0",
blue: "#00F"
};

Enum.Size = {
big: "200px",
medium: "400px",
small: "600px"
};

通过这种方式,您还可以向每个枚举添加更多信息(例如顺序、重要性、类或 css 值),还可以使用 in 检查枚举是否存在。运营商。

var Enum = {};

Enum.Color = {
red: "#F00",
green: "#0F0",
blue: "#00F"
};

console.log("red" in Enum.Color);
console.log("black" in Enum.Color);
console.log(Enum.Color.red);

如果您坚持要让它看起来像您当时描述的那样:

let Enum = {};

Enum.Color = {
check: [
'red',
'green',
'blue',
]
};

Enum.Size = {
check: [
'big',
'medium',
'small',
]
};

Object.keys(Enum).forEach(function(key) {
var list = Enum[key].check;
Enum[key].check = value => list.indexOf(value) !== -1;
});

console.log(Enum.Color.check("red"));
console.log(Enum.Color.check("black"));
console.log(Enum.Size.check("tiny"));
console.log(Enum.Size.check("medium"));

关于javascript - 在(自定义)枚举容器中注入(inject)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58316994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com