我不明白为什么以下代码会说无法读取未定义的属性'x',即使该属性是在其对象定义之后添加的。
let points = [
{ x:0, y:2 },
{ x:10, y:20 },
];
points[3] = { x:3, y:8, z:15 }
console.log(points[3])
// ok until here
points.dist = function() {
let p1 = this[0];
let p2 = this[2];
let a = p2.x-p1.x; let b = p2.y-p1.y;
return Math.sqrt(a*a + b*b);
};
points.dist();
答案 0 :(得分:2)
您使用2个跨越索引0和1的对象初始化了数组。然后向索引3添加了一个对象。但是,在dist
函数中,您正在访问索引2。索引2没有定义对象。 >
let p2 = this[2]; // <-- It should be either 0, 1, or 3; 2 is never defined on array
您可以在使用数组之前检查其结构:
let points = [
{ x:0, y:2 },
{ x:10, y:20 },
];
points[3] = { x:3, y:8, z:15 }
console.log(points);