在原型构造函数中创建对象引用

时间:2015-11-01 20:01:42

标签: javascript prototype prototype-programming

我正在尝试使用Javascript原型对象,并且由于我对传统类的理解而遇到了一个块。

我的代码如下所示:

$(document).ready(function () {
    var instance = new cards();
    $dom = instance.buildItem(5);
}
var cards = function () {
    //constructor
    this.chromaObj = chroma.scale(["lightblue", "navy"]).domain([2, 6]);
}
cards.prototype.buildItem = function (val) {
    var scale = this.chromaObj;
    var $item = $("<span>" + val + "</span>").addClass("label-default").addClass("label").css({
        "background-color": scale(val)
    });
    return $item;
}

每次在buildItem函数中调用scale时,我在控制台中收到一个错误,即scale不是函数,但是,如果我在buildItem函数内创建了scale实例,它会按预期工作。

有人可以指出我正确的方向,为什么我在构造函数中定义时无法访问函数引用?

1 个答案:

答案 0 :(得分:0)

原始代码确实可以正常工作。

我的问题原来是我使用通用buildItem从另一个方法(此处未显示)调用cards.prototype.buildItem(),导致后续调用chromaObj未定义。

解决方案是将对cards.prototype.buildItem()的所有来电更改为this.buildItem()