说我有一个像下面这样的课程。为导入的类传递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
}
}
}
有更好的方法吗?
答案 0 :(得分:0)
Yessir,有一种更好的方法,称为类继承。您想让您的香蕉班扩大水果班。这样,它们都是同一个对象,您的香蕉继承了水果类的所有方法和属性。
export default class Banana extends Fruit {
答案 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();
主要部分是,您可以仅传递香蕉对象的颜色,而不是传递整个范围。
如果您确实与父范围有关,请尝试从父级扩展子类。