es6 enum 多关联
在ES6中,可以使用Object.freeze()来创建一个多关联(multi-association)的枚举类型。这种方式可以让你为每个枚举值关联多个属性。
下面是一个使用Object.freeze()的例子:
const Color = Object.freeze({
RED: { name: "red", hex: "#FF0000" },
GREEN: { name: "green", hex: "#00FF00" },
BLUE: { name: "blue", hex: "#0000FF" }
});
console.log(Color.RED.name); // 输出: red
console.log(Color.GREEN.hex); // 输出: #00FF00
// 尝试修改枚举对象的属性将会失败,因为它已经被冻结
Color.RED.name = "new name";
console.log(Color.RED.name); // 输出: red,不会改变
在这个例子中,Color是一个对象,每个属性(如RED、GREEN和BLUE)都是一个关联了多个属性(如name和hex)的不可变对象。这样就实现了类似于真正枚举的多关联行为。