【发布时间】:2018-03-29 08:03:35
【问题描述】:
(请注意这不是一个重复的问题,请参阅下面@Jeff M 的回答)
我正在尝试理解 es6 类语法。我想以与此代码使用工厂函数相同的方式编写我的类:
示例 1:
const barker = (state) => ({
bark: () => console.log("Woof, I am " + state.name)
});
const driver = (state) => ({
drive: () => state.position = state.position + state.speed
});
const murderRobotDog = (name) => {
let state = {
name,
speed: 100,
position: 0
};
return Object.assign({},
barker(state),
driver(state)
);
};
const bruno = murderRobotDog("bruno");
bruno.bark(); // "Woof, I am Bruno"
我在一个完全不同的教程中使用“类”的类组合的工作示例如下所示:
示例 2:
class Employee {
constructor(firstName, familyName) {
this._firstName = firstName;
this._familyName = familyName;
}
getFullName() {
return `${this._firstName} ${this._familyName}`;
}
}
class Group {
constructor(manager /* : Employee */ ) {
this._manager = manager;
this._managedEmployees = [];
}
addEmployee(employee) {
this._managedEmployees.push(employee);
}
}
我可以看到组合的概念是如何工作的,但这些似乎是非常不同的方式。使用工厂的第一个示例似乎最直观,但我想使用 es6 类语法(不要担心为什么:)
也许我遗漏了一些东西,答案很明显,但是我将如何以最简单的方式使用 es6 类来完成示例 1 中所做的事情?谢谢。
【问题讨论】:
标签: javascript oop composition es6-class