JavaScript ----------------- 寄生式繼承


寄生式繼承
  寄生式繼承是於原型式繼承緊密相關的一種思路。寄生式基礎的思路與寄生構造函數和工廠模式類似,既創建一個僅用於封裝繼承過程的函數,該函數內部以某種方式來增強對象,最后再像真地是它做了所有工作一樣返回對象。
以下代碼示范了寄生式繼承模式。

 
         

 function object(o){
   function F(){

   }
  F.prototype=o;
   return new F();
 };



function
createAnother(original){ var clone = object(original); // 通過調用函數創建一個新對象 clone.sayHi = function(){ //以某種方式增強真個對象 alert("hi"); } return clone; //返回這個對象 }

 


在這個例子中,createAnother() 函數接收一個參數,也就是將要作為新對象基礎的對象。然后把這個對象(original)傳遞給object()函數,將返回的結果賦值給clone。再為其添加一個sayHi方法,最后返回clone對象。
可以像下面這樣使用 createAnother()方法

 var person={
            name:"Nicholas",
            friends:["Shelby","Court","Van"]
       }
 var now = createAnother(person);
 now.sayHi(); // hi

通過createAnother() 基於person對象返回的一個新對象------ now ;不僅僅擁有person對象的全部方法和屬性,還擁有自己的sayHi方法;

在主要考慮對象而不是自定義類型和構造函數的情況下,寄生式繼承也是一種有用的模式。前面示范繼承模式時使用的object()函數不是必需的;任何能夠返回新對象的函數都適用於此模式。

 注意:使用寄生式繼承方式來為對象添加函數,由於不能達到函數復用,導致效率變低,這與構造函數模式類似。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM