Javascript添加向量2D图形

时间:2016-11-14 22:39:47

标签: javascript vector

我对JavaScript很新,目前我真的很挣扎! 我正在做2D图形模块,并且已经给出了一些需要传递Vector的测试。 我被困在添加功能上。 要通过测试,它说我需要:

添加功能 - 您的Vector对象应该有一个'add'函数,它将一个Vector对象作为 它的参数。该函数应该返回一个新构造的Vector对象,该对象是结果 使用参数Vector添加'this'向量。

这是我到目前为止的代码:

 var Vector = (function () {
function Vector(pX, pY) {
    this.setX(pX);
    this.setY(pY);

}
Vector.prototype.getX = function () {
    return this.mX;
};
Vector.prototype.setX = function (pX) {
    this.mX = pX;
};
Vector.prototype.getY = function () {
    return this.mY;
};
Vector.prototype.setY = function (pY) {
    this.mY = pY;
}

 //this is my attempt at the add function
Vector.prototype.add = function (x, y) {
    var a = this.mX + x;
    var b = this.mY + y;
    return Vector(a, b);
}


return Vector;
 }());

这是它需要通过的测试:

  describe("Add", function () {
    var secondVector, thirdVector;
    secondVector = new Vector(20, 30, 0);
    thirdVector = vector.add(secondVector);

    it("X Set", function () {
        expect(thirdVector.getX()).toEqual(50);
    });
    it("Y Set", function () {
        expect(thirdVector.getY()).toEqual(70);
    });
});

很抱歉,如果这令人困惑,我仍然掌握术语并理解一切意味着什么。如果你什么都不懂,请告诉我。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果不给您答案,请让我们分解问题以帮助您理解。

  

添加功能 - 您的Vector对象应该有一个'add'函数,它将一个Vector对象作为参数。

这就是说你需要创建一个名为add的函数并将其放在矢量对象上。您已正确完成此操作。然而,它然后说将一个Vector对象作为其参数。您目前提供两个参数:xy

// this should not provide x & y, but a previously created vector
Vector.prototype.add = function (x, y) {

// so your function definition should look something like this
// where vec is a different Vector created elsewhere.
Vector.prototype.add = function(vec) {
  

该函数应该返回一个新构造的Vector

你几乎没有这个,你只是错过了new这个词。我建议您详细了解new this article,因为这很重要。

  

Vector对象,它是使用参数Vector添加'this'Vector的结果。

因为您在add上创建了prototype函数,所以无论何时在函数内使用this,都意味着您正在查看{{1}对象的实例调用了函数。你在那里写的是正确的。唯一的问题是您要添加add& x个参数,而不是另一个Vector对象的x和y。