ExtJS4.2 php版を学ぶ(四)

3064 ワード

alternateClassName 
Ext.define('Developer', {
    alternateClassName: ['Coder', 'Hacker'],
    code: function(msg) {
        alert('Typing... ' + msg);
    }});
var joe = Ext.create('Developer');
joe.code('stackoverflow');
var rms = Ext.create('Hacker');
rms.code('hack hack');

このキーワードとaliasの違いは何ですか?
statics
Ext.define("My.Teacher",{
	
	config: {
	 	name : ""
	},
	
	statics : {
		say : function() {
			alert("static");
		}
	},
	
	constructor: function(cfg) {
	 	this.initConfig(cfg);
	},
	
	say : function() {
		var me = this;
		alert("My type is "+me.name);
		return this;			
	}
		
});
My.Teacher.say();

staticsが提供する静的属性サブクラス継承不可継承inheritableStaticsを使用する
Ext.define("My.Teacher",{
	
	config: {
	 	name : ""
	},
	
	statics : {
		say : function() {
			alert("static");
		}
	},
	
	constructor: function(cfg) {
	 	this.initConfig(cfg);
	},
	
	say : function() {
		var me = this;
		alert("My type is "+me.name);
		return this;			
	}
		
});

Ext.define('My.MathTeacher', {
	 extend : "My.Teacher",
	 alias : ["MyTeacher","MathTeacher"],
     config: {
		 type : "Math"
     },
     constructor: function(cfg) {
         this.initConfig(cfg);
     }
});
My.MathTeacher.say();

mixinsマルチ継承
Ext.define("My.Teacher",{
	
	config: {
	 	name : ""
	},
	
	statics : {
		say : function() {
			alert("static");
		}
	},
	
	constructor: function(cfg) {
	 	this.initConfig(cfg);
	},
	
	say : function() {
		var me = this;
		alert("My type is "+me.name);
		return this;			
	}
		
});

Ext.define("canTeachMath",{
	teachMath : function() {
		alert("I can tech Math");	
	}
})

Ext.define("My.MathTeacher", {
	mixins : ["My.Teacher","canTeachMath"],
	alias : ["MyTeacher","MathTeacher"],
    config: {
		type : "Math"
    },
    constructor: function(cfg) {
        this.initConfig(cfg);
    }
});
var adn = Ext.create("My.MathTeacher",{
		name : "asds",
		type : "sads"
	});
adn.teachMath();

requires uses 
usesプロパティの場合、参照クラスを後ろに置くことはできますが、エラーは報告されません.
requiresプロパティの場合、参照クラスはクラスを使用する前にロードする必要があります.そうしないと、エラーが発生します.
Ext.define("Gird",{
	
	uses : ["boy"],
	
	config: {
	 	name : ""
	},
	
	constructor: function(cfg) {
	 	this.initConfig(cfg);
	},
	
	say : function() {
		var me = this;
		alert("My type is "+me.name);
		return this;			
	}
		
});

Ext.define("Boy",{
	
	config: {
	},
	
	constructor: function(cfg) {
	 	this.initConfig(cfg);
	},
	
	play : function() {
		alert("I can play");
		return this;			
	}
		
});

singleton単例化
Ext.define('Logger', {
    singleton: true,
    log: function(msg) {
        console.log(msg);
}});
Logger.log('Hello');