So it turned out that what I thought was parasitic combination inheritance was just parasitic. The globalUtils.inheritPrototype() function was being called before the function/objects were being called, thus inheriting nothing.. I think that this is because Angular is calling the functions after the other JavaScript is called. Since (I think!) the code has to be structured in this decoupled way to allow flexible use of OO, I had to look again at how all the pieces fit together. It turns out that a properly configured function object that inherits from a base class looks like this:
function ChildFn3(globalService) { console.log("Start ChildFn3"); ChildFn2.call(this, globalService); globalU.inheritPrototype(this, ChildFn2); console.log("Finish ChildFn3"); }
we can adjust inherited values such as arrays without ‘static’ behaviors as well:
function ChildFn4(globalService) { console.log("Start ChildFn4"); ChildFn2.call(this, globalService); globalU.inheritPrototype(this, ChildFn2); this.colors.push('black'); console.log("Finish ChildFn4"); }
Here’s the better, running example: http://philfeldman.com/inheritance/inherit3.html