2014-02-07 36 views
2

我目前正在使用Javascript中的顯示原型模式的一些概念和語法。你們能幫我理解嗎?如何使用顯示原型模式在內部調用重寫方法

我想實現的是:從基類的另一個方法調用重寫的方法。

我怎麼做的:

  1. 基類:

    var Base = function() { 
        //... 
    }; 
    Base.prototype = function() { 
        var init = function() { 
         console.log('init'); 
         customInit.call(this); 
        }, 
        customInit = function() { 
         console.log('custom init source'); 
        }; 
    
        return { 
         init: init, 
         customInit: customInit 
        }; 
    }(); 
    
  2. 擴展類:

    var Extended = function() { 
        //... 
    }; 
    Extended.prototype = new Base(); 
    Extended.prototype.customInit = function() { 
        console.log('custom init extended'); 
    }; 
    
  3. 呼叫到擴展類:

    window.addEventListener('load', function(){ 
        var myObject = new Extended(); 
        myObject.init(); 
        myObject.customInit(); 
    }); 
    

從類以外的customInit調用執行方法(我想)的覆蓋版本中,而來自內部的類仍然調用該方法(我想不是的「基地」版本通話)。

這是正常的嗎?有沒有什麼解決方法來實現這一目標?

回答

2

代碼(1號線)的一些修改:

....... 
var init = function() { 
    console.log('init'); 
    //customInit.call(this); 
    this.customInit.call(this); 
}, 
..... 
+0

正是我所錯過的。謝謝 :) – Yosko

1

您可以使用Parents.prototype調用child中的父函數。一些function.call(這一點,參數1,參數2)

欲瞭解更多信息,你可以看看這個答案:https://stackoverflow.com/a/16063711/1641941

+0

聽起來更像與我想達到的目的相反。儘管如此,超級有用的信息(和鏈接)。非常感謝。 – Yosko

相關問題