【发布时间】:2016-05-06 00:24:21
【问题描述】:
假设我有一个Thing 课程,我想同时成为Hideable 和Openable。
通过组合使用与Douglas Crockford's 对象创建类似的方法,我已经能够从多个类“继承”。
这种方法不适用于访问器(getter/setter)。
我需要使用类,因为这是一项要求。我还发现我正在将功能从一个类复制到另一个类,但我不希望这些从基类继承。
有什么想法吗?
我目前取得的进展在下面的sn-p中:
class Openable {
constructor(isOpen = false) {
this._isOpen = isOpen;
}
get isOpen() {
return this._isOpen + ' is stupid.';
}
set isOpen(value) {
this._isOpen = value;
}
}
class Hideable {
constructor(isHidden = false) {
this._isHidden = isHidden;
}
get isHidden() {
return this._isHidden + ' is stupid.';
}
set isHidden(value) {
this._isHidden = value;
}
}
class Thing {
constructor(config) {
let { isOpen, isHidden } = config;
let openable = new Openable(isOpen);
this.isOpen = openable.isOpen;
let hideable = new Hideable(isHidden);
this.isHidden = openable.isHidden;
}
}
let thing = new Thing({
isOpen: true,
isHidden: false
});
【问题讨论】:
-
一个东西怎么能既隐藏又开放?
-
不能。抱歉,这是一个快速演示
-
你不应该为此使用类。时期。如果您的规范不允许使用 mixins,请将其丢弃。最能帮助您的事情:stackoverflow.com/questions/29879267/…
-
好像类在 JS 中不适合目的?
-
“mixin”和“interface”只是一个流行词。在 ECMA-262 中没有这样的东西。但这是一种在对话时处理模式的便捷方式。
标签: javascript class ecmascript-6 mixins composition