Javascript 为什么是对象';s方法不可用于其他对象?

Javascript 为什么是对象';s方法不可用于其他对象?,javascript,prototype,Javascript,Prototype,所以我在这里要做的是为rp,ra在轨道对象中创建向量对象a应该使用向量rp和ra的原型方法,但是当我运行脚本时,rp的原型方法不可用,我得到一个错误消息: 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.

所以我在这里要做的是为
rp
ra
轨道
对象中创建
向量
对象
a
应该使用向量
rp
ra
的原型方法,但是当我运行脚本时,
rp
的原型方法不可用,我得到一个错误消息:

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);

我希望这不是我在某个地方遗漏的愚蠢的错误,因为这已经给我带来了一些麻烦。这是我第一次在JS中使用原型,所以我看不出我做错了什么。我只想知道为什么
这个.rp
没有
向量
方法,以及我能做些什么来修复我的代码。

问题不在你认为的地方

此。a
构建为:

TypeError: 'undefined' is not a function (evaluating 'this.rp.addition(this.ra)')
这意味着它是一个数字,所以你不能接受
this.a.magnity()

我想
这个。a
不应该是这个量级(或者你改变了主意)。解决方法是将其结构更改为

this.a = this.rp.addition(this.ra).magnitude(); 

this.a
应该是一个数字,我为得到它所做的操作应该是有效的
this.rp.addition(this.ra)
只做向量加法,把它们相加,然后我就找到了它的大小。在控制台中,我能够执行
orbit.a=orbit.rp.addition(orbit.ra).magnity()
,因此我不明白为什么上面的操作不起作用。@EvanA问题不在于计算
this.rp.addition(this.ra).magnity()
,而在于计算后面的值,即
this.rp.addition(this.ra).magnity().magnity()
this.a = this.rp.addition(this.ra);