聚合物多重遗传/组成

时间:2014-05-14 16:00:02

标签: javascript inheritance polymer web-component

使用Polymer中的'extend'属性不支持聚合物网站says多重继承(或组合)。我希望一个元素由一个Polymer元素中的某些方法组成,而另一些元素来自另一个,以使它反映应用程序逻辑。目前有没有办法在Polymer中实现它? (就像使用javascript mixins一样)

4 个答案:

答案 0 :(得分:7)

Polymer现在支持mixin:

var mixinObj = {
   foo: function() {
     /* ... */
   }
};

var mixinObj2 = {
   foo2: function() {
     /* ... */
   }
};


Polymer('my-component', Polymer.mixin({   // Platform.mixin for polymer version < 0.5
  bar: function() {

     /* ... */
     this.foo();   // all the functions in mixinObjs are now accessible through 'this'   
     this.foo2();   



  }


}, mixinObj, mixObj2);  // Platform.mixin accepts multiple mixin objects

更多信息here

答案 1 :(得分:2)

我不能谈论聚合物人的推理,但它通常被认为优于use composition over inheritance

答案 2 :(得分:1)

提出一个类似的问题,但方向略有不同,但也涵盖了您的使用案例:How to extend multiple elements with Polymer

答案 3 :(得分:0)

聚合物支持Mixin概念,用于克服多重继承概念。

示例:

Class ElementOne extends Polymer.Element {
   ready() {
     super.ready();   
   }
}

Class ElementTwo extends Polymer.Element {
  ready() {
     super.ready();
  }
}

Class ElementThree extends ElementOne(ElementTwo(Polymer.Element)) {
  ready() {
     super.ready();
  }
}

我希望它对你有所帮助。