ExtJS 4 中,可以在一个类里面包含另一个类,并合并它们的成员(包括方法与属性)。 使用这一个特性,我们可以对一些细小且经常被使用的方法进行打包,然后合并它们到各个需要它们的类中。
代码
ExtJS:4.0.7
IDE:Eclipse Java EE
浏览器:Chrome 25
1: //-------等待被混合的类---------------------------------
2: Ext.define('HasCamera', {
3: takePhoto : function() {
4: alert('Say Cheese! .... Click!');
5: }
6: });
7:
8: //-------混合HasCamera的另一个类------------------------
9: Ext.define('Cookbook.Smartphone', {
10: mixins : {
11: camera : 'HasCamera'
12: },
13:
14: useCamera:function(){
15: this.takePhote(); // 调用HasCamera的方法
16: }
17: });
18:
19: //-------实例化与调用----------------------------------
20: var smartphone = Ext.create('Cookbook.Smartphone');
21: smartphone.useCamera(); // Say Cheese! .... Click!
说明
- 定义一个被‘混合’的类HasCamera;
- 定义一个类Smartphone,并使用mixins关键字混合HasCamera;
- 由于HasCamera已经被‘混合’到了Smartphone中,所以在Smartphone中,已经可以使用HasCamera的所有成员(包括属性)。
总结
‘混合’类与继承看起来类似,但是其主要的目的有所不同。使用‘混合’类的主要目的在于复用,使用继承的目的在于实现面向对象的一些目的(比如多态)。