0

我已经开发了一个库的草稿,并且来自 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;
}

我的问题:有没有一种简单的方法可以在不覆盖原型方法的情况下绑定它?或者,我是否必须在构造函数中声明要绑定到当前实例的所有函数?

任何帮助将非常感激!

4

0 回答 0