2014-01-24 105 views
0

我有這個對象'cp'。它有一些屬性,如標籤和arcSettings。每當我初始化這個對象,並調用方法'graph()'它說調用javascript對象自己的屬性

Uncaught TypeError: Cannot read property '0' of undefined 

我做錯了什麼?

function cp() {    
     this.labels = [{ 
      "pointThickness": 0.8, 
      "distance": 8, 
      "textDistance": 7, 
      "strokeColor": "#888", 
      "strokeWidth": 0.5, 
      "textColor": "#777", 
      "pointColor": "#888", 
      "textSize": 4, 
      //"interval":100, 
      //"precision":2, 
      "num": 10, 
      "startValue": 0, 
      "endValue": 300 
     } 
     ]; 

     this.arcSettings = [ 
      { 
       "totalArcAngle":300, 
       "startAngle":(-this.totalArcAngle/2), 
       "endAngle":(this.totalArcAngle/2), 
       "progressValue":200, 
       "radius":150, 
       "thickness":30, 
       "displayValue":this.progressValue 
      } 
     ];     
} 

cp.prototype.getOneUnit = function() { 
    return oneUnit = (this.arcSettings[0].totalArcAngle)/(this.label[0].endValue - this.label[0].startValue); 

} 

cp.prototype.graph= function(){      
var oneUnit = this.getOneUnit(); 

} 

var cp = new cp(); 
cp.graph(); 

回答

2

cp.prototype.getOneUnit功能,您使用的this.label。相反,它應該是this.labels

cp.prototype.getOneUnit = function() { 
    return oneUnit = (this.arcSettings[0].totalArcAngle)/(this.labels[0].endValue - this.labels[0].startValue); 
} 
1

你剛剛犯了一個錯字。你寫了標籤而不是標籤。

2

起初使物體

var cp = new cp(); 

然後添加方法/屬性爲原型

cp.prototype.graph= function(){ } 

同樣的實例,你已經在這兩個類/函數聲明中使用相同的名稱和對象實例變量。您可以將function cp()更改爲function Cp()