1、支持命名空间(Java里用的是包的概念)
Ext.namespace("Ext.ling"); //这句话相当于声明了一个命名空间
2、支持类实例属性
Ext.apply(Ext.ling.Person.prototype,{
name:"lingyibin"
}); //给Person类添加了name属性,并赋了值。
这里跟大家讲另一个东西,就是{ }和[ ]在js应用中的区别。
前者表示一个类,后者表示一个数组。因为类里面都有属性名,所以前者的格式一般都是
{property1:value1, property2:value2 ……}
3、类的实例方法
Ext.namespace("Ext.ling");
Ext.ling.Person = Ext.emptyFn;
Ext.apply(Ext.ling.Person.prototype,{
name:"",
sex:"",
print:function(){
alert(String.format("姓名:{0},性别:{1}",this.name,this.sex));
}
});
使用:
var person = new Ext.ling.Person();
person.name = "ling";
person.sex = "male";
person.print();
4、类的静态方法
Ext.ling.Person.print = function(_name,_sex){
var person = new Ext.ling.Person();
person.name = _name;
person.sex = _sex;
person.print();
}
5、构造方法
Ext.ling.Person = function(_cfg){
Ext.apply(this,_cfg);
}
Ext.ling.Person = function(_name,_sex){
var person = new Ext.ling.Person({name:_name,sex:_sex});
person.print();
}
Ext.apply(Ext.ling.Person.prototype,{
print:function(){
alert(String.format("姓名:{0},性别:{1}",this.name,this.sex));
}
});
使用:
var p = new Ext.ling.Person({name:"ling",sex:"男"});
p.print();
6、类继承
Ext.namespace("Ext.ling");
Ext.ling.Person = function(_cfg){ //父类
Ext.apply(this,_cfg);
};
Ext.apply(Ext.ling.Person.prototype, {
job:"Jobless",
print:function(){
alert(String.format("姓名:{0},性别:{1},角色:{2}",this.name, this.sex,this.job));
}
});
Ext.ling.Teacher = function(_cfg){ //子类
Ext.apply(this,_cfg);
}
Ext.extend(Ext.ling.Teacher,Ext.ling.Person, {job:"老师"}); //继承了父类,并给job赋了值
7、重写
Ext.extend(Ext.ling.Teacher,Ext.ling.person,{
print:function(){
alert("这个方法被我改写了!");
}
});
(这是我去年8月写的一篇文章,由于面试的需要把它转到这边来!)