Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主类的访问字段_Javascript_Oop - Fatal编程技术网

Javascript 主类的访问字段

Javascript 主类的访问字段,javascript,oop,Javascript,Oop,我有一些课程叫汽车和发动机 class Car { constructor() { this.engine = new Engine(); this.start = false; } startCar() { // some code } } class Engine { startEngine() { if(start == false) { // Car.start

我有一些课程叫汽车和发动机

class Car {
     constructor() {
        this.engine = new Engine();
        this.start = false;
     }

    startCar() {
         // some code
     } 
}

class Engine {
     startEngine() {
          if(start == false) { // Car.start
               startCar() // Car.startCar
          }
     }
}

我想调用startCar方法并从startEngine方法访问start字段。有没有其他方法可以访问这些字段和方法而不将它们作为参数提供给Engine类?

您可以在汽车的构造函数中绑定startEngine()方法:

 constructor() {
    this.engine = new Engine();
    this.start = false;

    this.engine.startEngine = this.engine.startEngine.bind(this);
 }
然后您可以在startEngine方法中使用“this”:

class Engine {
     startEngine() {
          if(this.start == false) { // Car.start
               this.start = true;
          }
     }
}
class Engine {
     startEngine() {
          if(this.start == false) { // Car.start
               this.startCar();
          }
     }
}
并从汽车的startCar()方法访问引擎的startGene()方法:

您还可以从startEngine()方法内部访问startCar()方法:

class Engine {
     startEngine() {
          if(this.start == false) { // Car.start
               this.startCar();
          }
     }
}