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

标签 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;

提前感谢您的帮助。

最佳答案

你可以这样:

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);

关于javascript - 如何在算术表达式中编写构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13635537/

相关文章:

java - 在构造函数中使用参数化类型从名称实例化类

java - final 字段的初始化顺序

java - MongoDB:如何使用 Java 构建算术查询

c - 需要有关评估给定表达式的解释

多个 + 和 - 运算符的 Java 优先级

javascript - TypeScript 中函数或变量的契约是什么

javascript - "suppress inherited styles"(和背景?)缺少 CSS 功能的解决方法

c++ - 如何将断言放在类初始化列表之前?

javascript - Google Analytics 有没有办法像 Mixpanel 一样跟踪多个事件参数?

javascript - 云搜索 :ranging the distance between 0 to some value