Javascript 未定义的Push属性

Javascript 未定义的Push属性,javascript,Javascript,有没有人能解释一下为什么我的js技能受到限制,“无法读取未定义属性‘推送’” function Position(position) { if (!position) { throw new Error('No position object given!'); } this.lat = parseFloat(position.lat); this.lon = parseFloat(position.lon); th

有没有人能解释一下为什么我的js技能受到限制,“无法读取未定义属性‘推送’”

 function Position(position) {
      if (!position) {
        throw new Error('No position object given!');
      }
      this.lat = parseFloat(position.lat);
      this.lon = parseFloat(position.lon);

      this.timestamp = position.timestamp;
      this.heading = position.heading;
      this.speed = position.speed;
    };

    Position.prototype.getLatLng = function () {
      return new L.LatLng(this.lat, this.lon);
    };


    function Positions(positions) {
      if (!(positions instanceof Array)) {
        throw new Error('No positions array given!');
      }
      for (var i = 0; i < positions.length; i++) {
        this.positions.push(new Position(positions[i]));
      }
    };
功能位置(位置){
如果(!位置){
抛出新错误('未给出位置对象!');
}
this.lat=parseFloat(position.lat);
this.lon=parseFloat(position.lon);
this.timestamp=position.timestamp;
this.heading=position.heading;
此.speed=位置.speed;
};
Position.prototype.getLatLng=函数(){
返回新的L.LatLng(this.lat,this.lon);
};
职能职位(职位){
if(!(数组的位置实例)){
抛出新错误('未给出位置数组!');
}
对于(变量i=0;i
试试看

for(变量i=0;i
此。此函数中未定义位置。尝试在推送操作之前定义它

this.position = [];

因为没有定义
this.positions
您可能想要
positions
(而不是
this.positions
)?您在该代码中调用
push
的唯一时间是在
positions
内,这是您在该代码中从未调用过的函数。所以,无论问题是什么,你的问题都不会暴露出来。这可能归结为“这个
在JavaScript中是如何工作的?”尽管如此。在回应关于将this.positions替换为just positions的评论/回答时。。。我怀疑目标是将数组中的项附加到(无限)循环中的自身,而不是复制到新数组。这将导致无限循环<代码>位置。当你将新项目推到上面时,长度将继续增长。结果是“this.positions”应该是“return positions”。你先给出正确的答案。@JermaineHercules,这怎么是正确的答案?它会使你的页面崩溃。
this.position = [];