2011-04-29 85 views
0


幫助下面的查詢將幫助我開始並澄清許多疑問。到目前爲止,我讀過我可以通過函數語句在JS中創建類,並使用JSON表示來保存對象值。所以,在下面的代碼Javascript類,構造函數和種子值

  1. 如何寫保持一些形狀值
  2. 如何初始化從TESTDATA形狀對象TESTDATA變量。我也許能夠通過分配每個成員

    var obj = { 
          x: testData[i].x, 
           y: testData[i].y, 
          ...  
         }; 
    

創建的對象,這是正確的方式,或者我們可以使用構造函數描述here

var testData = [ {}, {} ] 


//Shape class 

var Shape = function(x, y, w, h) { 
     this.x = x; 
     this.y = y; 
     this.w = w; 
     this.h = h; 
     this.calculateArea = function() { 
      alert("Area.."); 
}; 


func test() { 
var arr = []; 
for (var i=0,l=testData.length; i<l; i++) { 
     var s = testData[i]; 
      var obj = // how to construct Shape object here through constructor   
     }; 
arr.push(obj); 

} 
+0

'JSON!= object literals'。在你的代碼中根本沒有JSON。 – 2011-04-29 12:13:57

+0

亞..亞歷克斯在下面提到的相同..仍然熟悉一種對我來說是新的語言 – bsr 2011-04-29 12:31:15

回答

1

您可以構造一個新的對象(一個Shape,在這種情況下)與new關鍵字。所以,你可以使用:

var obj = new Shape(testData[i].x, testData[i].y, testData[i].w, testData[i].h); 
+0

所以沒有明確的構造函數的聲明是需要的?我是否需要指定所有參數,或者它們是否以重載的方式工作(比如說不指定函數成員或h參數)? – bsr 2011-04-29 11:49:52

+0

在javascript中,'function'是構造函數。假設你來自Java,那麼JavaScript函數不能被重載。如果你要調用'Shape(x,y,w)','h'將會是'undefined',但不會拋出錯誤。但是,您可以在構造函數中進行條件檢查以複製重載的效果。 [這裏是一個很好的JavaScript OOP指南](http://eloquentjavascript.net/chapter8.html)。 – tcooc 2011-04-29 11:55:15

+0

謝謝..很好的資源... – bsr 2011-04-29 12:09:57

1

假設你需要TESTDATA是JSON運輸從服務器等

testData = [{ x: 1, y: 1, w: 1, h: 1}, ...] 

然後作爲@digitalFish建議你可以通過創建從每個測試數據元素的Shape對象

var obj = new Shape(s.x, s.y, s.w, s.h); 
arr.push(obj); 
0

new運算符允許您通過其構造函數實例化對象。

var circle = new Shape(x, y, width, height); 

而且,它不叫JSON對象(這將是JavaScript對象符號表示法),這就是所謂的對象的文字符號

0

當需要使用.apply時,新操作員可能會在某些邊緣情況下導致問題。我相信最好的方法如下所示。這也是一個小DRYer,因爲你不在整個過程中重複'this'。

var createShape = function(x, y, w, h) { 
    return { 
     x: x, 
     y: y, 
     w: w, 
     h: h, 
     calculateArea: function() { 
      alert("Area.."); 
     } 
    }; 
}; 
var a = createShape(1,2,3,4); 
var b = createShape(4,3,2,1); 
console.log(a, b); 
相關問題