无法使用“for ... in”循环将值赋给对象的属性

时间:2015-01-18 19:23:56

标签: javascript javascript-objects 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(角落)都会打印&#34; topLeftCorner&#34;,&#34; topRightCorner&#34;等等而不是&#34; cornersAbs。 topLeftCorner,&#34;等。然而,以这种方式编写循环会给出一个错误,指出cornersAbs.corner未定义。)

使用括号表示法也没有帮助。

当我打印任何角落的值时.OOB控制台打印&#34; false&#34; (我将每个角落初始化.OOB到)或&#34;未定义。&#34;

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

1 个答案:

答案 0 :(得分:2)

你想这样做:

cornersAbs[corner]=...

进入角落&#39;你在看。

要查看子属性,请使用cornerAbs[corner].prop,它会对角所引用的属性编制索引,并查看其中的prop

另一方面,cornerAbs.corner相当于cornerAbs["corner"],这不是您想要的。