如何在算术表达式中编写构造函数?

时间:2012-11-29 21:59:56

标签: javascript constructor arithmetic-expressions

我希望减少JavaScript中的丑陋代码,特别是与构造函数有关。

我有一个矢量定义为:

function Vector2(X, Y) {
    this.x = 0.0;
    this.y = 0.0;

    if (X)
        this.y = Y;
    if (Y)
        this.y = Y;
}

现在,为了将两个向量添加到一起,我必须写:

var vector1 = new Vector2(1.0, 0.5);
var vector2 = new Vector2(4.5, 1.0);

vector1.x += vector2.x;
vector1.y += vector2.y;

当使用许多构造函数时,我想使代码更漂亮,更易于阅读,并制作更小的文件。我想写的是:

vector1 += vector2;

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

你可以这样:

function Vector(X, Y) {
    this.x = X || 0.0; // yes, I simplified a bit your constructor
    this.y = Y || 0.0;
}
Vector.prototype.add = function(v) {
   this.x += v.x;
   this.y += v.y; 
}

你只需做

var vector1 = new Vector(4,4);
var vector2 = new Vector(1,3);
vector1.add(vector2);

答案 1 :(得分:0)

vector1 += vector2;

我不知道你来自哪种语言,但你不能用JavaScript覆盖运算符。