Ext js面向对象的特性

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月写的一篇文章,由于面试的需要把它转到这边来!)

 

你可能感兴趣的:(面试,ext,prototype)