一个对象的属性也是一个对象,怎么进行解耦?

Oops
  • 3
新手上路,请多包涵
class Wheel{
  constructor(num) {
   this.num = num;
  }
  num:0,
  roll(){
   console.log('wheel is rolling!');
  }
}

class Car{
    constructor(engine, wheel) {
        this.engine = engine;
        this.wheel = wheel;
    }
    engine:0,
    wheel,
}

let wheel = new Wheel(4);
let car = new Car(1, wheel);
car.wheel.roll();

wheel对象是car对象的属性,怎么对car和wheel进行解耦,有时候属性对象的属性又是父对象,例如为wheel添加belong属性,表示所属的car,请问一般怎么进行解耦?

评论
阅读 304
2 个回答
✓ 已被采纳

我觉得现在就挺好的,至少没有将Wheel的参数传递给Car构造函数然后在构造函数内实例化。
进一步的,你可以在Wheel类添加方法setCar:

class Wheel{
  constructor(num) {
   this.num = num;
   this.car = null;
  }
  roll(){
   console.log('wheel is rolling!');
  }
  setCar (car) {
    this.car = car
  }
} 

你要区分类和实例
在一个Car中的wheel是实例对象,这个和类是有区别的。

撰写回答

登录后参与交流、获取后续更新提醒

宣传栏