Javascript Can';t使用“为对象的属性赋值”;为了……在“中”;环

Javascript Can';t使用“为对象的属性赋值”;为了……在“中”;环,javascript,javascript-objects,for-in-loop,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 }

这是我的目标:

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;
}
for(拐角SABS中的var拐角){
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;
}
for(拐角SABS中的var拐角){
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]=...
访问您正在查看的“角落”

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


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

这里说对象不需要是数组。您可能需要解释,
corner
只是属性名,所以需要使用
cornerAbs[corner]
以访问实际属性值。关于“为什么”的一点解释会让答案更好。cornersAbs[corner]。OOB=。。。这就是诀窍。谢谢你,亚什。虽然我不确定为什么满点表示法或全括号表示法都不起作用。@jfriend00我提到我已经尝试了Eyash的方法(使用属性的全名),但它对我不起作用,因为我使用了全括号表示法(cornersAbs[corner][OOB])或全点表示法(cornersAbs.corner.OOB)。还是不知道为什么我要用一个乱七八糟的符号。@Ben-你需要
cornersAbs[corner].OOB
cornersAbs[corner][“OOB”]
。括号中的是文字字符串或包含字符串的变量名。由于
corner
是一个包含字符串的变量,因此必须使用括号表示该字符串。由于
OOB
是一个文本字符串,因此您可以将其中任何一个用于引用的该部分。您不能使用
cornersab[corner][OOB]
,因为
OOB
不是定义的变量。谢谢。现在完全有道理了。