2
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);
所以,我想在这里做的是在Orbit
对象创建rp
,ra
Vector
对象。 a
应该利用向量rp
和ra
的原型方法,但是当我运行该脚本的rp
原型方法都无法使用,我得到一个错误说:为什么对象的方法不可用于其他对象?
TypeError: 'undefined' is not a function (evaluating 'this.rp.addition(this.ra)')
我希望这不是一个愚蠢的错误,我错过了某处,因为这一直给我一些麻烦。这是我第一次在JS中使用原型,所以我没有看到我在这里做错了什么。我只需要知道为什么this.rp
没有Vector
方法,我可以做些什么来修复我的代码。
'this.a'应该是一个数字和操作我做得到它应该工作。 'this.rp.addition(this.ra)'只是做矢量加法将它们加在一起,然后我发现它的大小。在控制台中,我可以执行'orbit.a = orbit.rp.addition(orbit.ra).magnitude()',所以我不明白为什么上述不起作用。 – EvanA 2014-08-30 15:10:17
@EvanA问题不是在计算'this.rp.addition(this.ra).magnitude()',但在服用后的大小,也就是'this.rp.addition(this.ra).magnitude( ).magnitude()' – 2014-08-30 16:47:15