2014-02-25_javascript_Class

var Class=function(parent){

   var klass=function(){

       this.init.apply(this,arguments);

   }

   if(parent){

       var subclass=function(){};

       subclass.prototype=parent.prototype;

       klass.prototype=new subclass;

   }

   klass.prototype.init=function(){};

   //prototype's alias

   klass.fn=klass.prototype;

   klass.fn.parent=klass;

   

   //class properties

   klass.extend=function(obj){

       var extended=obj.extended;

       for(var i in obj){

           klass[i]=obj[i];

       }

       if(extended) extended(klass);

   }

   //instance properties

   klass.include=function(obj){

       var included=obj.included;

       for(var i in obj){

           klass.fn[i]=obj[i];

       }

       if(included) included(klass);

   }

   return klass;

}

var Person=new Class();

Person.prototype.init=function(){

   //do something init

};

Person.extend({

   find:function(id){/*  ...  */};

   exists:function(id){/*  ...  */};

   extended:function(klass){

       console.log(klass," was extended!");

   };

});

Person.include({

   save:function(id){/*  ...  */};

   destory:function(id){/*  ... ..*/};

   included:function(klass){

       console.log(klass," was included!");

   };

});

var person=new Person();

person.save();


//原型繼承

var Animal=function(){};

Animal.prototype.breath=function(){

   console.log("breath");

};

var Dog=function(){};


Dog.prototype=new Animal;

Dog.prototype.wag=function(){

   console.log("wag tail");

};

var dog=new Dog;

dog.wag();

dog.breath();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章