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