如何在javascript中创建3状态对象?
假设我们要制作“蛇”游戏。那里有一个网格,蛇可以在上面移动。每个字段都是一个对象。该对象应该以某种方式具有以下属性:“是蛇在上面的田野”,“是蛇在上面的田野”还是“两者都不是”。
应该使用字符串属性({state: "fruit"/"snake"/"grass"})
还是两个布尔属性({isSnake: true/false, isFruit: true/false})
来完成。
我应该使用哪个选项?还是有更好的选择?
还有一个后续问题:我应该在这里使用getter和setter还是足够?
field.isSnake = true;
通常,什么时候应该使用getter和setter?
答案 0 :(得分:1)
尝试标记:
const TypeFlags = {
FRUIT: 1,
SNAKE: 2,
GRASS: 4,
};
const field = {
flag: 1,
};
console.log(
(field.flag & TypeFlags.FRUIT) !== 0, // fruit
(field.flag & TypeFlags.SNAKE) !== 0, // snake
(field.flag & TypeFlags.GRASS) !== 0 // grass
);
答案 1 :(得分:0)
具有两个布尔值isSnake
和isFruit
是危险的,因为它可以表示四个状态,但是只有三个有效。蛇不能是水果,但是您的代码允许它成为水果。您是否使用字符串,数字或符号来表示三种状态是个人喜好。
答案 2 :(得分:-2)
您的答案都取决于您遵循的编程范例,深入学习编程范例,您有望获得答案, 作为一个初学者,我想您正在使用“面向对象编程”范例,那么您必须使用Getter和setter,是的,像“ isSanke”这样的标志比使用Strings更清洁。