首页 文章

尝试在同一个类中调用函数内的其他函数 . 未捕获的TypeError:this.saveToHist不是HTMLCanvasElement的函数

提问于
浏览
0

我正在尝试在调用另一个函数的类中创建一个函数 . 代码是

createElAdditive(){
      ...
      this.cvs.addEventListener("mousedown", function () {
        this.saveToHist();
        ...
      });
    }

    saveToHist() {
      this.historyNumber++;
      if (this.historyNumber < this.saveHistory.length) {
        this.saveHistory.length = this.historyNumber;
      }
      this.saveHistory.push(this.cvs.toDataURL());
    }

这两个函数在同一个类中 . 如何访问同一类中的其他功能?在我的情况下,我想在createElAdditive函数中调用cvs事件中的saveToHist函数 .

完整的代码在codepen here上,您可以尝试在画布上绘制一些内容以查看控制台中的错误 .

1 回答

  • 0

    addEventListern() 块内的 this 指的是除了对象实例之外的其他内容 . 你需要从外面捕获它,然后使用它

    createElAdditive(){
          ...
          var that = this;          // captured here
          this.cvs.addEventListener("mousedown", function () {
            that.saveToHist();      // used here
            ...
          });
        }
    

相关问题