Javascript 在js中创建3状态对象的最佳方法
如何在javascript中创建3状态对象? 假设我们想让游戏变成“蛇”。在这里,你有一个网格的领域,蛇可以移动。每个字段都是一个对象。该对象应该以某种方式具有以下属性:“它是蛇所在的字段”、“它是水果所在的字段”和“两者都不是”。 这应该通过一个字符串属性Javascript 在js中创建3状态对象的最佳方法,javascript,Javascript,如何在javascript中创建3状态对象? 假设我们想让游戏变成“蛇”。在这里,你有一个网格的领域,蛇可以移动。每个字段都是一个对象。该对象应该以某种方式具有以下属性:“它是蛇所在的字段”、“它是水果所在的字段”和“两者都不是”。 这应该通过一个字符串属性({state:“fruit”/“snake”/“grass”})或两个布尔属性({isSnake:true/false,isFruit:true/false})来实现。 我应该使用哪个选项,或者有更好的选项吗 还有一个后续问题:我应该在这里
({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
是危险的,因为它可以表示四种状态,但只有三种是有效的。蛇不能是水果,但你的代码允许它是水果。不管你用字符串、数字还是符号来表示三种状态,这都是个人的偏好。在我看来,它们只是你想如何编写代码的偏好。这还取决于类的复杂性。根据您的描述,我更喜欢布尔属性,因为它们更具可读性。