ExtJS中Ext.define()、Ext.create()方法使用小结

Ext.define()和Ext.extend()都用于自定义类,不过Ext.extend()方法已经弃用,推荐使用Ext.define()。Ext.define()的语法格式如下:

Ext.define(String className, Object data, [Function createdFn])

其中,参数className用于执行自定义类的类名,推荐采用与java类名相同的命名规范;data参数用于为该类定义属性、方法;createdFn用于指定该类创建成功的回调函数。

示例代码:

Ext.define('Person', {
	name : '匿名',
	age : 0,
	walk : function() {
		alert(this.name + 'is walking');
	}
}, function() {
	alert('Person类创建成功');
	alert(this.self == Person.Class);
});

var p = new Person();
p.walk;

Ext.define()方法的第二个参数是一个对象,该对象用于为新创建的类指定属性,该对象可以指定任何合法的属性,以下是几种具有特殊意义的属性:

self:引用当前类本身。

alias:为该类定义别名。

alternateClassName:为该类定义可选的类名。

config:用于为该类指定配置选项,ExtJS会自动为config指定的选项添加setter和getter方法。

extend:用于指定该类继承的父类。

inheritableStatics:与static属性相同,也可以为该类定义静态方法和静态属性。不过,该属性定义的静态方法和静态属性可以被子类继承,而static定义的则不可以被子类继承。

mixins:用于列出所有要被混入的类。

override:用于指定要覆盖的类。

requires:用于列出在实例化该类之前,必须预先加载的类。

singleton:如果该属性被设为true,则该类的实例将是单例的。

static:为该类定义静态属性和静态方法。

uses:用于列出必须与该类同时使用的类。

上面的特殊属性中,extend用于指定该类继承的父类。还可以通过constructor为该类指定构造器:

Ext.define('Animal', {
	weight : 30
});

Ext.define('Dog', {
	extend : Animal,
	constructor : function(name, age) {
		this.name = name;
		this.age = age;
	}
});

var d = new Dog('Snoopy', 2);
alert('名字:' + d.name + ' 年龄:' + d.age + ' 重量:' + d.weight);

config属性的值是一个对象,用于为该类指定配置选项,ExtJS会自动为config指定的选项添加setter和getter方法。

Ext.define('User', {
	// 指定配置选项
	config : {
		name : 'abcdef',
		password : '123456'
	},
	// 定义构造器,直接接受config指定的选项
	constructor : function(cfg) {
		this.initConfig(cfg);
	}
});

var user = new User();
user.setName('yedward');
user.setPassword('pass123');
alert(user.getName() + user.getPassword());

当使用Ext.define()方法定义了类以后,除了可使用new关键字来创建对象以外,还可以使用Ext.create()方法来创建对象。Ext.create()方法的语法格式如下:

create(String name, Object args)

其中,第一个参数name指定要创建对象的类名;第二个参数是一个对象,用于向新生成的对象传入构造参数值(也称为配置选项,即为config属性指定选项传入参数值)。

Ext.define('User', {
	// 指定配置选项
	config : {
		name : 'abcdef',
		password : '123456'
	},
	// 定义构造器,直接接受config指定的选项
	constructor : function(cfg) {
		this.initConfig(cfg);
	}
});

var user = Ext.create('User', {
	name : 'yedward',
	password : 'pass1234'
});
alert(user.getName() + user.getPassword());

statics和inheritableStatics都用于为该类定义静态属性和静态方法,区别是inheritableStatics定义的静态属性和静态方法可以被子类继承。

Ext.define('Factory', {
	inheritableStatics : {
		desc : '制造产品的地方',
		make : function() {
			alert('正在生产产品');
		}
	}
});
alert(Factory.desc);
Factory.make();
Ext.define('ComputerFactory', {
	extend : Factory
});
ComputerFactory.make()

本文标题:ExtJS中Ext.define()、Ext.create()方法使用小结

本文链接:http://yedward.net/?id=209

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章