Javascript 在es6中从另一个类调用函数

Javascript 在es6中从另一个类调用函数,javascript,class,oop,model-view-controller,ecmascript-6,Javascript,Class,Oop,Model View Controller,Ecmascript 6,我的问题很简单。基本上,我有一个控制器和一个视图类。当我点击一个按钮时,控制器告诉视图显示一个东西。问题是,控制器不能。这是密码 类控制器{ 构造器视图{ 视图=新视图; let button=document.getElementById'button'; 按钮。addEventListener'单击',=>{ 控制器。点滴; }; } 溺爱{ 视图。图纸5,5; } } 类视图{ 构造控制器{ 让canvas=document.getElementById'canvas'; 让pen=ca

我的问题很简单。基本上,我有一个控制器和一个视图类。当我点击一个按钮时,控制器告诉视图显示一个东西。问题是,控制器不能。这是密码

类控制器{ 构造器视图{ 视图=新视图; let button=document.getElementById'button'; 按钮。addEventListener'单击',=>{ 控制器。点滴; }; } 溺爱{ 视图。图纸5,5; } } 类视图{ 构造控制器{ 让canvas=document.getElementById'canvas'; 让pen=canvas.getContext'2d'; this.controller=控制器; this.drawThing=drawThing; } drawThingx,y{ pen.beginPath; pen.moveTo0,0; pen.lineTox,y; 笔画; } } 视图变量的作用域仅限于构造函数。您应该改用this.view:

视图变量的作用域仅限于构造函数。您应该改用this.view:


或者,我猜传递给构造函数的视图应该是某种控制反转实现。您能同时显示该选项吗?@MadaraUchiha您的意思是应该将视图分配给此视图吗?我不确定OP想要用这段代码实现什么。@Gothdo你建议的东西很有魅力。谢谢。不过,现在它告诉我它无法读取视图中“beginPath”的属性。这很奇怪,因为我不记得当他们让我们在课堂上使用这些代码时,必须使用任何第三方库。不管怎样,谢谢你的回答。或者,我猜传递给构造函数的视图应该是某种控制反转实现。您能同时显示该选项吗?@MadaraUchiha您的意思是应该将视图分配给此视图吗?我不确定OP想要用这段代码实现什么。@Gothdo你建议的东西很有魅力。谢谢。不过,现在它告诉我它无法读取视图中“beginPath”的属性。这很奇怪,因为我不记得当他们让我们在课堂上使用这些代码时,必须使用任何第三方库。不管怎样,谢谢你的回答。
class Controller {

    constructor(view) {
        this.view = new View();

        let button = document.getElementById('button');
        button.addEventListener('click', () => {
            controller.doThing();
        });
    }

    doThing() {
        this.view.drawThing(5, 5);
    }

}