为什么一个对象的方法不适用于另一个对象
Why is an object's method not available for another object?
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);
所以我在这里要做的是为rp
创建Vector
对象,ra
在Orbit
对象中。 a
应该利用向量rp
和ra
的原型方法,但是当我运行脚本时,rp
的原型方法不可用,并且我收到一个错误说:
TypeError: 'undefined' is not a function (evaluating 'this.rp.addition(this.ra)')
我希望这不是我在某个地方遗漏的愚蠢错误,因为这已经给我带来了一段时间的麻烦。这是我第一次在JS中使用原型,所以我看不出我在这里做错了什么。我只需要知道为什么this.rp
没有Vector
方法以及我可以做些什么来修复我的代码。
问题不在于你认为它在哪里。
this.a
构建为:
this.a = this.rp.addition(this.ra).magnitude();
这意味着它是一个数字,所以你不能接受this.a.magnitude()
我想this.a
不应该是这个规模(或者你改变了主意(。解决方法是将其结构更改为
this.a = this.rp.addition(this.ra);
相关文章:
- Javascript使用本地存储,回调对象并用Json更改为一个字符串以用于填充函数
- 关闭当前选项卡并打开一个新的-仅适用于Chrome
- 如何在一个适用于HTML5的TeeChart中绘制堆叠和普通系列
- 提交了一个PDF格式的PHP脚本只适用于Adobe阅读器XI
- AngularJS中的依赖注入仅适用于Angular“对象”吗?
- 创建一个 JavaScript 对象,用于抓取每个数组项并对其进行整理
- 有没有一个简单的 html 网络服务器适用于 mac
- 两个几乎相等的jQuery函数;一个适用于IE,一个不适用于IE
- 如何创建一个“;加载程序文件“;适用于angularjs+requirejs的控制器
- I'我正试图用javascript打开一个弹出窗口.它适用于Chrome,但不适用于IE或Firefox
- 在某个位置添加一个javascript脚本标记,以便它适用于sphinx文档中的每个文件
- 将鼠标悬停在表上,用jquery更改另一个元素样式,只适用于1毫秒
- 有可能制作一个按钮'添加到主屏幕'适用于iphone
- Socket.io——一个对象用于多个用户
- 适用于Chrome,但不适用于Safari——这是一个隐藏的DIV,只在提交带有所有必需字段的表单时显示
- 为什么一个对象的方法不适用于另一个对象
- 将文本字段限制为一个小数点输入(代码适用于Safari,但不适用于Firefox)
- 子函数中的参数对象(适用于chrome控制台,但不适用于其他地方)
- 是否有一个同时适用于iOS和Android的原生控件javascript框架?
- 如何使用适用于 Node.js 的 AWS 开发工具包将 Amazon S3 中的所有对象从一个前缀复制/移动到另一个前