我尝试在JS中实现Vector3类并编写
function Vector(x,y,z) {
this.x=x;
this.y=y;
this.z=z;
}
到目前为止看起来还不错,但后来我想添加Vector.prototype
函数addVector
:
Vector.prototype.addVector(addx,addy,addz) = function(addx,addy,addz) {
x+=addx; y+=addy; z+=addz;
};
然后我收到一个错误:
NaN行的ReferenceError:未定义addx
我是JS的新手,我想知道我到底输错了什么。
答案 0 :(得分:8)
替换:
Vector.prototype.addVector(addx,addy,addz) =
使用:
Vector.prototype.addVector =
这不是你指定参数的地方。
答案 1 :(得分:2)
问题在于语法。以下应该做你的工作。
Vector.prototype.addVector = function(addx,addy,addz){
x+=addx;
y+=addy;
z+=addz;
};
答案 2 :(得分:1)
更正语法
Vector.prototype.addVector = function (addx, addy, addz) {
this.x+=addx;
this.y+=addy;
this.z+=addz;
}
检查here以了解有关原型的更多信息。
答案 3 :(得分:0)
你已经有几个正确的答案,但让我用一个简单的视觉示例为你扩展它们,这样你就可以学习;看来你可能不熟悉JavaScript原型。
// Here is a new function or in this case class
function Person() {};
// This is one way we could add methods to the Person() class
// After you call this method Person() will now have firstName,
// lastName, and age properties
Person.prototype.recordInfo = function(fname,lname,age){
this.firstName = fname;
this.lastName = lname;
this.age = age;
}
如果你不想把事情放在一起并且有很多方法可以添加到Person()类中,你也可以像这样声明你的方法:
Person.prototype = {
recordInfo: function(fname,lname,age){
this.firstName = fname;
this.lastName = lname;
this.age = age;
},
aNewMethod: function(){
// ...
},
bNewMethod: function(){
// ...
}
}; // <-- Notice the closing semicolon and the commas separating the methods above