【问题标题】:Passing arguments to a class将参数传递给类
【发布时间】:2017-04-02 10:51:01
【问题描述】:
我正在尝试为 Polymer 2.0 组件(基于类的语法)创建一个 mixin,如下所示。有没有办法按照我现在的方式将选项传递给班级?
使用 mixin 定义聚合物元素:
class PodcastListView extends PolymerApolloBehavior(Polymer.Element, myOptions) {
//some code
}
mixin 类:
export const PolymerApolloBehavior = (superclass, options) => class extends superclass {
constructor() {
console.log(options);
}
}
【问题讨论】:
标签:
javascript
ecmascript-6
polymer
es6-class
polymer-2.x
【解决方案1】:
我可以建议您为 PodcastListView 类使用函数包装器,该类将创建一个具有新行为的新类。它看起来像这样:
export const PolymerApolloBehavior = (original, options) => {
let result = Object.assign({}, original)
const originalConstructor = result.prototype.constructor
result.prototype.constructor = () => {
console.log(options) // your behavior
originalConstructor() // original constructor
}
// any changes of class
return result
}
现在你可以应用你的新行为了:
export default PolymerApolloBehavior(PodcastListView, {behaviorOptions})