Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在js中创建3状态对象的最佳方法_Javascript - Fatal编程技术网

Javascript 在js中创建3状态对象的最佳方法

Javascript 在js中创建3状态对象的最佳方法,javascript,Javascript,如何在javascript中创建3状态对象? 假设我们想让游戏变成“蛇”。在这里,你有一个网格的领域,蛇可以移动。每个字段都是一个对象。该对象应该以某种方式具有以下属性:“它是蛇所在的字段”、“它是水果所在的字段”和“两者都不是”。 这应该通过一个字符串属性({state:“fruit”/“snake”/“grass”})或两个布尔属性({isSnake:true/false,isFruit:true/false})来实现。 我应该使用哪个选项,或者有更好的选项吗 还有一个后续问题:我应该在这里

如何在javascript中创建3状态对象? 假设我们想让游戏变成“蛇”。在这里,你有一个网格的领域,蛇可以移动。每个字段都是一个对象。该对象应该以某种方式具有以下属性:“它是蛇所在的字段”、“它是水果所在的字段”和“两者都不是”。 这应该通过一个字符串属性
({state:“fruit”/“snake”/“grass”})或两个布尔属性
({isSnake:true/false,isFruit:true/false})来实现。

我应该使用哪个选项,或者有更好的选项吗

还有一个后续问题:我应该在这里使用getter和setter还是这样就足够了

field.isSnake = true;

一般来说,什么时候应该使用getter和setter?

这两个答案都取决于您所遵循的编程范例,深入学习编程范例您将有望得到答案, 作为初学者,我假设您使用的是“面向对象编程”范例,那么您应该使用Getter和setter,像“isSanke”这样的是标志比使用字符串更干净

const TypeFlags={
水果:1,
蛇:2,
草:4,
};
常量字段={
国旗:1,,
};
console.log(
(field.flag和TypeFlags.FRUIT)!==0,//FRUIT
(field.flag和TypeFlags.SNAKE)!==0,//SNAKE
(field.flag和TypeFlags.GRASS)!==0//GRASS
);

有两个布尔值,
isSnake
isFruit
是危险的,因为它可以表示四种状态,但只有三种是有效的。蛇不能是水果,但你的代码允许它是水果。不管你用字符串、数字还是符号来表示三种状态,这都是个人的偏好。

在我看来,它们只是你想如何编写代码的偏好。这还取决于类的复杂性。根据您的描述,我更喜欢布尔属性,因为它们更具可读性。