function Vector(i, j, k){
this.i = i;
this.j = j;
this.k = k;
};
Vector.prototype = {
addition: function(vec){
return new Vector(vec.i+this.i, vec.j+this.j, vec.k+this.k);
},
magnitude: function(){
return Math.sqrt(this.i*this.i + this.j*this.j + this.k*this.k);
},
};
function Orbit(rp, ra, ecc){
this.rp = new Vector(rp, 0, 0);
this.ra = new Vector(ra, 0, 0);
this.a = this.rp.addition(this.ra).magnitude(); //The error is in this line
};
var orbit = new Orbit(6563, 42165);
所以我在这里要做的是在Vector
对象中为rp
,ra
创建Orbit
个对象。 a
应该使用向量rp
和ra
的原型方法,但是当我运行脚本时,rp
的原型方法不可用,我得到一个错误说:
TypeError: 'undefined' is not a function (evaluating 'this.rp.addition(this.ra)')
我希望这不是一个我在某个地方遗失的愚蠢错误,因为这给我带来了一段时间的麻烦。这是我第一次在JS中使用原型,所以我不知道我在这里做错了什么。我只需要知道为什么this.rp
没有Vector
方法以及我可以采取哪些措施来修复我的代码。
答案 0 :(得分:2)
问题不在你认为的地方。
this.a
构建为:
this.a = this.rp.addition(this.ra).magnitude();
这意味着它是一个数字,所以你不能this.a.magnitude()
我认为this.a
不应该是重要的(或者你改变了主意)。修复方法是将其构造改为
this.a = this.rp.addition(this.ra);