日期:2014-05-16  浏览次数:20344 次

JS继承
1. 原型式继承
  
   // 为Person对象创建一个构造函数
   function Person(name) {
       this.name = name;
   }

   // 给Person对象添加一个新方法
   Person.prototype.getName = function(){
       return this.name;
   };


   // 创建一个新的User对象的构造函数
   function User(name, password) {
       this.name = name;
       this.password = password;
   }

   // User对象继承所有Person对象的方法
   User.prototype = new Person();

   // 添加一个新方法到User对象中
   User.prototype.getPassword = function(){
       return this.password;
   }
   


2. 类式继承
  
   function Person(name) {
       this.name = name;
   }

   // 给Person 对象添加一个新的方法
   Person.method('getName', function(){
	   return name;
       });

   function User(name, password){
       this.name = name;
       this.password = password;
   }

   // 从Person对象继承所有方法
   User.inherits(Person);

   //给User对象添加一个新的方法
   User.method('getPassword', function(){
	   return this.password;
       });

   // 覆盖Person对象创建的getName方法,但通过uber函数来调用原有方法
   User.method('getName', function(){
	   return "My name is: " + this.uber('getName');
       });
   


3. Dean Edwards 的Base库进行简单对象创建与继承
  
   // 创建一个新的Person类
   var Person = Base.extend({
	   // Person类的构造函数
	   constructor: function(name) {
	       this.name = name;
	   },

	   // Person类的一个简单方法
	   getName: function(){
	       return this.name;
	   }
       });

   // 创建一个新的继承自Person类的User类
   var User = Person.extend({
	   // 创建User类的构造函数
	   constructor: function(name, password){
	       // 这个函数实际上调用了父类的构造函数
	       this.base(name);
	       this.password = password;
	   },

	   // 给User类提供了另一个简单的方法
	   getPassword: function(){
	       return this.password;
	   }
       });