无法使用 "for...in" 循环为对象的属性赋值

Can't assign values to properties of object with a "for...in" loop

这是我的对象:

var cornersAbs = {
    topLeftCorner: { x: center.x + orin.corners.topLeft.x, y: center.y + orin.corners.topLeft.y, OOB: false },
    topRightCorner: { x: center.x + orin.corners.topRight.x, y: center.y + orin.corners.topRight.y, OOB: false },
    bottomLeftCorner: { x: center.x + orin.corners.bottomLeft.x, y: center.y + orin.corners.bottomLeft.y, OOB: false },
    bottomRightCorner:{ x: center.x + orin.corners.bottomRight.x, y: center.y + orin.corners.bottomRight.y, OOB: false }
}

还有我的循环

for (var corner in cornersAbs) {
    corner.OOB = corner.x < 0 | corner.y < 0 | corner.x > canvas.width | corner.y > canvas.height;
}

似乎没有为 corner.OOB 属性分配任何值。

似乎没有任何帮助,即使我这样写循环:

for (var corner in cornersAbs) {
    cornersAbs.corner.OOB = cornersAbs.corner.x < 0 | cornersAbs.corner.y < 0 | cornersAbs.corner.x > canvas.width | cornersAbs.corner.y > canvas.height;
}

(我尝试这样写,因为每次迭代的 console.log(corner) 会打印 "topLeftCorner"、"topRightCorner" 等,而不是 "cornersAbs.topLeftCorner," 等。写作然而,这样的循环给我一个错误,说 cornersAbs.corner 是未定义的。)

使用括号表示法也无济于事。

当我打印任何 corner.OOB 的值时,控制台打印 "false" (我将每个 corner.OOB 初始化为的值)或 "undefined."

我已经测试了我读入 corner.x 和 corner.y 的位置,它们工作正常。

您想做的事情:

cornersAbs[corner]=...

访问您正在查看的'corner'。

要查看子 属性,您可以使用 cornerAbs[corner].prop,它索引角所指的 属性 并查看其中的 prop

另一方面,cornerAbs.corner等同于cornerAbs["corner"],这不是你想要的。