构造函数
添加一个名为constructor的函数作为类的成员变量,这个变量就是自定义类的构造函数:
Ext.define('Student', {
name : 'unnamed',
getName : function(){
return 'Student name is ' + this.name;
},
constructor : function(studentName){
if(studentName)
this.name = studentName;
}
});
然后,就能通过向构造函数传递参数的方式来创建一个类的对象了:
var studentObj = Ext.create('Student','XYZ');
//or
var studentObj = new Student('XYZ');
studentObj.getName();
//output: Student name is XYZ
私有变量
利用JavaScript闭包的特性来创建类中的私有变量,像这样:
Ext.define('Student', function(){
//注:因为闭包的特性,这里的'unnamed'的值永远不会被访问到。
var name = 'unnamed';
return {
constructor : function(name){
//注:内部变量和外部变量name相互联系,使得name变量持久化,构成了一个闭包的环境。
this.name = name;
},
getName : function(){
alert('Student name is' + this.name);
}
};
});
//create an object of Student class
var studentObj = Ext.create('Student','XYZ');
studentObj.getName();
无法直接访问私有变量(也就是studentObj.name的返回值永远不会是’unnamed’),只能通过getName()方法来访问了。
静态变量
和其他语言差不多(比如Java),静态变量可以通过【类名+.】的方式直接访问,而不需要对象。Ext JS里面利用’statics’这个参数来定义属于类的静态变量:
Ext.define('Student',
{
name : 'unnamed',
getName : function(){
alert('Student name is ' + this.name);
},
constructor : function(studentName){
if(studentName)
this.name = studentName;
},
statics :
{
getSchoolName : function(){
return "XYZ";
}
}
});
//call static method
alert(Student.getSchoolName());
比如上面例子中的,可以像这样Student.getSchoolName()直接访问。