调用javascript对象自己的属性

时间:2014-01-24 10:55:30

标签: javascript oop

我有这个对象' cp'。它有一些属性,如标签和arcSettings。每当我初始化这个对象并调用方法' graph()'它说

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

3 个答案:

答案 0 :(得分: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()

答案 2 :(得分:1)

你刚刚写了一个错字。你写了标签而不是标签。