我正在尝试使用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实例,它会按预期工作。
有人可以指出我正确的方向,为什么我在构造函数中定义时无法访问函数引用?
答案 0 :(得分:0)
原始代码确实可以正常工作。
我的问题原来是我使用通用buildItem
从另一个方法(此处未显示)调用cards.prototype.buildItem()
,导致后续调用chromaObj
未定义。
解决方案是将对cards.prototype.buildItem()
的所有来电更改为this.buildItem()
。