我目前正在努力解决Javascript中Revealing Prototype Pattern的一些概念和语法问题。你能帮助我理解吗?
我想要实现的目的:从基类的另一个方法调用重写方法。
我是怎么做到的:
基类:
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
执行方法的覆盖版本(我想要的),而类中的调用仍然调用方法的“基础”版本(不是我的要)。
这是正常的吗?有没有解决方法来实现这个目标?
答案 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