【发布时间】:2021-10-25 08:54:23
【问题描述】:
我正在构建一个工厂函数来管理战舰游戏的 Ship 对象。到目前为止,我有以下内容:
const Ship = (name, length, orientation = 'horizontal') => {
let sunk = false;
const hits = Array(length).fill(false);
const hit = (position) => {
if (position <= hits.length) hits[position] = true;
};
function sink() {
sunk = true;
}
return {
name,
length,
orientation,
sunk,
hits,
hit,
sink,
};
};
我正在测试sink() 方法以将沉没属性布尔值从false 更改为true。但是,每当我跑步时:
example.sink()
example.sunk
沉没总是假的。
我哪里错了?
由于某种原因,hit() 方法改变了 hits 属性fine. Butsink()is not altering thesunk` 属性。
谢谢
【问题讨论】:
-
你是如何调用这个方法的?
-
sunk是一个布尔值,而不是像hits这样的数组引用。Ship返回的对象不会被重新评估,因此值将始终相同。 -
谢谢,那么我怎样才能实现我想要做的呢?
-
您可以为
sunk属性创建getter和setter。 -
@LearningPython 我可能会退后一步,找到一些好的 JS OOP 教程,然后决定你想采用哪种 JS OOP 方法。有几种方法可以解决这个问题。
标签: javascript object methods tdd