2014-02-07 37 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

相关问题