Javascript 即使属性存在,也无法读取该属性

Javascript 即使属性存在,也无法读取该属性,javascript,function,properties,Javascript,Function,Properties,我不明白为什么下面的代码说,即使在对象定义之后添加了属性“x”,也无法读取未定义的属性“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];

我不明白为什么下面的代码说,即使在对象定义之后添加了属性“x”,也无法读取未定义的属性“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和1的两个对象初始化了数组。然后向索引3添加了一个对象。但是,在
dist
函数中,您正在访问索引2。索引2没有定义对象

let p2 = this[2]; // <-- It should be either 0, 1, or 3; 2 is never defined on array

我认为您缺少了这个。,例如
这个.x