2012-11-29 53 views
1

我想減少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; 

非常感謝您的幫助。

回答

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

這絕對實現了所有的目標。我希望有更多類似於C系列操作符的操作符超載。 無論如何,非常感謝您的快速回答@dystroy。 –

0
vector1 += vector2; 

我不知道你來自什麼語言,但你不能用JavaScript重寫操作符。