添加函数到原型

时间:2017-02-15 14:55:14

标签: javascript prototype

我尝试在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的新手,我想知道我到底输错了什么。

4 个答案:

答案 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