如何使用Revealing Prototype Pattern在内部调用重写方法

时间:2014-02-07 10:21:59

标签: javascript prototype-programming revealing-prototype

我目前正在努力解决Javascript中Revealing Prototype Pattern的一些概念和语法问题。你能帮助我理解吗?

我想要实现的目的:从基类的另一个方法调用重写方法。

我是怎么做到的:

  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();
    });
    
  4. 从类外部调用customInit执行方法的覆盖版本(我想要的),而类中的调用仍然调用方法的“基础”版本(不是我的要)。

    这是正常的吗?有没有解决方法来实现这个目标?

2 个答案:

答案 0 :(得分:2)

您的代码的一些修改(1行):

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

答案 1 :(得分:1)

您可以使用Parents.prototype调用子项中的父函数。一些function.call(this,param1,param2)

有关详情,请查看以下答案:https://stackoverflow.com/a/16063711/1641941