我已经开发了一个库的草稿,并且来自 OOP Java 背景,在设置/访问正确的“this”-keyword 时遇到问题。
每个实例都链接到一个画布,它使用各种设置来绘制它,像这样实例化(命令返回this,所以可链接):
var ffc = new FatFontCreator()
.setup({
canvasID : "#mapCanvas",
nestingDepth: 5
})
.drawNumber(args);
对象的功能在原型属性中设置:
FatFontCreator.prototype.settings = {
dataSet : {
highestMagnitude : 5,
someFunction : function() {
console.log(this);
}
}
etc...
我的主要问题是确保this的值是相关对象,因为我希望将某些功能作为回调调用。
为了设置 this 我在构造函数中绑定它们,它替换了对象的现有函数:
this.settings.dataSet.someFunction = this.settings.dataSet.someFunction.bind(this);
这是行不通的,因为它改变了实际的原型函数,而且你只能绑定一个函数一次,它不能用于多个实例。
编辑:构造函数看起来像这样
function FatFontCreator() {
this.canvas = undefined;
this.canvasContext = undefined;
etc.
return this;
}
我的问题:有没有一种简单的方法可以在不覆盖原型方法的情况下绑定它?或者,我是否必须在构造函数中声明要绑定到当前实例的所有函数?
任何帮助将非常感激!