枚举使用空对象

时间:2017-07-28 10:31:57

标签: javascript

我们可以创建"枚举"在Javascript中如下:

var MyEnum = {
    A: 0,
    B: 1,
}

我可以使用空对象而不是数字吗?

var MyEnum = {
    A: {},
    B: {},
}

有什么区别,哪些应该使用?没有任何具体的用例。

1 个答案:

答案 0 :(得分:0)

我在编辑后改变了我的回答,因为只是注意到你在尝试什么。

是的,你可以使用对象作为枚举值而没有任何问题。在对象中定义{}时,它会创建并使用唯一引用清空对象。

{} != {}将不相等,因为具有相同的两个不同对象并不意味着它们是同一个对象。你有两个红球,这些球是同一个球吗?没有。

instance.type == MyEnum.ObjectEnum1永远都是真的。 因为实例和MyEnum对象共享对象的相同引用。

var MyEnum = {
  A: 1,
  B: 2,
  C: 3,
  ObjectEnum1: {},
  ObjectEnum2: {}
}

var obj1 = {
	type: MyEnum.B
}

var obj2 = {
	type: MyEnum.C
}

var obj3 = {
	type: MyEnum.ObjectEnum1
}


console.log(obj1.type == MyEnum.B); //Should be true
console.log(obj2.type == MyEnum.A); //Should be false
console.log(obj2.type == MyEnum.C); //Should be true


console.log(obj3.type == MyEnum.ObjectEnum1); //Should be true
console.log(obj3.type == MyEnum.ObjectEnum2); //Should be false