将范围传递给导入的类的正确方法

时间:2019-04-20 03:53:28

标签: javascript

说我有一个像下面这样的课程。为导入的类传递this是否合适?还是有更好的方法来访问父级范围?

import Fruit from 'fruit'

export default class Banana {
  constructor () {
    this.color = 'yellow'
  }
  let length = new Fruit(this).getLength()
}
export default class Fruit {
  constructor(scope) {
    this.parentScope = scope 
  }

  getLength() {
    if (this.parentScope.color == 'yellow') {
      return 5
    }
  }
}

有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

Yessir,有一种更好的方法,称为类继承。您想让您的香蕉班扩大水果班。这样,它们都是同一个对象,您的香蕉继承了水果类的所有方法和属性。

export default class Banana extends Fruit {

https://javascript.info/class-inheritance

答案 1 :(得分:0)

我认为您缺少一些概念,我已对这些概念进行了更正,使您对代码的更改最少。

class Fruit {
  getLength(color) {
    if (color == 'yellow') {
      return 5;
    }
  }
}

class Banana {
  constructor() {
    this.color = 'yellow';
    let length = (new Fruit()).getLength(this.color);
    alert(length);
  }
}

let aFruit = new Banana();

主要部分是,您可以仅传递香蕉对象的颜色,而不是传递整个范围。

如果您确实与父范围有关,请尝试从父级扩展子类。