我目前正在努力研究 Javascript 中揭示原型(prototype)模式的一些概念和语法。你们能帮我理解一下吗?
我想要实现的目标:从基类的另一个方法调用重写的方法。
我是如何做到的:
基类:
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 }; } ();
扩展类:
var Extended = function () { //... }; Extended.prototype = new Base(); Extended.prototype.customInit = function () { console.log('custom init extended'); };
调用扩展类:
window.addEventListener('load', function (){ var myObject = new Extended(); myObject.init(); myObject.customInit(); });
从类外部对 customInit
的调用执行该方法的重写版本(我想要的),而从类内部的调用仍然调用该方法的“基本”版本(不是我想要的)。
这正常吗?有什么解决方法可以实现这一目标吗?
最佳答案
对代码进行一些修改(1行):
.......
var init = function() {
console.log('init');
//customInit.call(this);
this.customInit.call(this);
},
.....
关于javascript - 如何使用揭示原型(prototype)模式在内部调用重写方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21625098/