我对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);
});
});
很抱歉,如果这令人困惑,我仍然掌握术语并理解一切意味着什么。如果你什么都不懂,请告诉我。
提前谢谢。
答案 0 :(得分:1)
如果不给您答案,请让我们分解问题以帮助您理解。
添加功能 - 您的Vector对象应该有一个'add'函数,它将一个Vector对象作为参数。
这就是说你需要创建一个名为add
的函数并将其放在矢量对象上。您已正确完成此操作。然而,它然后说将一个Vector对象作为其参数。您目前提供两个参数:x
和y
。
// 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。