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