我过去常常对类这样做,其中一个子类即ChildObjParentObj在一个全新的类中,拥有父类的所有功能,只替换一个方法,即JobA通过继承使用函数覆盖。
现在用JS函数式编程,我有一个问题。如何替换旧函数JobA那是从父从一个新的组合函数调用?
注意:parentObj即init是一个第三方库吗我不想做任何修改我只是想使我当前的代码(基于类扩展)与用函数取代原始类的库的新版本兼容。
// Original code in main.js
var ParentObj = init;
function init(){
function JobA() {
console.log("JobA");
}
function JobB() {
console.log("JobB");
}
console.log("Init");
JobA(); //I want the called JobA HERE, to be the child's JobA
JobB();
}
// Extending it by replacing and wrapping, in extended.js
ParentObj = ( function(parent) {
function JobA() {
console.log("Child JobA");
}
function extendsInit() {
parent();
console.log("The extension");
}
return extendsInit;
})(ParentObj);
ParentObj();
引用自React团队:https://reactjs.org/docs/composition-vs-inheritance.html
在Facebook,我们在成千上万的组件中使用React,我们还没有发现任何我们会推荐创建组件继承层次结构的用例。
/* in parent "class" */
this.JobA = function() {};
/* in the extendsInit method */
parent();
overrideMethods();
function overrideMethods(){
this.JobA = function(){
console.log('I'm the overridden method!');
}
}
可以在您的解决方案中模拟继承…