修改已有的对象值



我开始失去理智了,需要帮助。我有一个函数如下:

private generateTimeObject(firstObject: someInterface, secondObject?: someInterface) {
let firstTime;
let secondTime;
if (condition) {
firstTime = firstObject.time;
secondTime = secondObject ? secondObject.time : null;
} else {
firstTime = firstObject.someOtherTimeValue;
secondTime = secondObject ? secondObject.someOtherTimeValue : null;
}
firstObject.customValues = {
firstTimeValue: firstTime,
secondTimeValue: secondTime
};
}

现在,下面的场景:

函数被这样调用:generateTimeObject(firstObject)。这意味着,该函数创建一个subbobject customValues,如下所示:

firstObject.customValues = {firstTimeValue, null}

现在,这个函数再次被调用。这回像这样:generateTimeObject(firstObject, secondObject).

函数现在应该将firstObject写成如下

firstObject.customValues = {firstTimeValue, secondTimeValue}

然而,我不能让这个工作。secondTimeValue仍然为空,我真的不知道为什么。我也试过使用Object.assign(),但它仍然不起作用。

如果你能帮我解决这个问题,我将不胜感激。

这是一个jsFiddle。可悲的是,它似乎工作良好,所以我的问题一定是在其他地方。我认为这与参考或范围有关,但我就是不明白。https://jsfiddle.net/pna75vrd/6/

在这种情况下,我解决这个问题的下一步是附加一个调试器并逐步执行代码,或者简单地添加一些console.log()语句来输出变量的值,以便您可以查询它们是什么,以及它们与您期望的值有何不同。例如:

private generateTimeObject(firstObject: someInterface, secondObject?: someInterface) {
let firstTime;
let secondTime;

console.log("firstObject=", firstObject)
console.log("secondObject=", secondObject)
if (condition) {
console.log("condition==true")
firstTime = firstObject.time;
secondTime = secondObject ? secondObject.time : null;
} else {
console.log("condition==false")
firstTime = firstObject.someOtherTimeValue;
secondTime = secondObject ? secondObject.someOtherTimeValue : null;
}

console.log("firstTime=", firstTime)
console.log("secondTime=", secondTime)
firstObject.customValues = {
firstTimeValue: firstTime,
secondTimeValue: secondTime
};

console.log("Again, firstObject=", firstObject)
}

在我的脑海中,可能是当函数第二次调用时,secondObject.timesecondObject.someOtherTimeValue为null。

相关内容

  • 没有找到相关文章

最新更新