2014-08-27 56 views
0

我有一個名爲Vec的類。 (矢量)製作新對象時使用不同類型的參數

function Vec (x_or_vec,y) { 
    this.x; 
    this.y; 
    switch (arguments.length) { 
     case 0: 
      this.x = 0; 
      this.y = 0; 
      break; 
     case 1: 
      this.x = x_or_vec.x; 
      this.y = x_or_vec.y; 
      break; 
     default: 
      this.x = x_or_vec; 
      this.y = y; 
    } 
} 

有時候我想打一個新的對象,而無需指定任何有關它的信息,那麼,我想x和y是零。其他時候,我想輸入一個矢量來複制新的矢量,有時我想指定新矢量的x和y座標。我不喜歡我在示例中使用的方法,對於我製作的某些類,不能使用此方法。

function Box (pos,color,size) { 
    this.pos = new Vec(pos); 
    this.color = color; 
    this.size = new Vec(size); 

} 

在某些情況下,我想指定的顏色,但不是大小,而在其他情況下,大小,但不變色,而且在某些情況下,兩個,有的沒有。

+0

您可以簡單地通過'Overload'(相同的函數**名稱** **不同的**參數**)函數。並用於創建對象使用'多構造函數' – 2014-08-27 17:34:34

+1

@SyedAliTaqi:JavaScript中沒有函數重載 – 2014-08-27 17:41:41

+0

@BOSS:謝謝你的信息。我對這個建議感到抱歉。 – 2014-08-27 17:45:10

回答

0

你可以做到這一點的JQuery傳遞一個文字對象的類。 初始化是這樣的:

// don't break if called without arguments 
if(arguments == undefined) 
    arguments = {}; 

// setting default value 
this.x = arguments.x || 'some default value'; 

// checking for object 
this.x = (typeof arguments.x === 'object') ? arguments.x.property : arguments.x; 

你有足夠的情況下,所以這是隻是一個指針。

相關問題