Reading 03 - AvreyBrown-401-advanced-javascript/seattle-javascript-401d32 GitHub Wiki
A delegate prototype is an object that serves as a base for another object. When you inherit from a delegate prototype, the new object gets a reference to the prototype.
When you try to access a property on the new object, it checks the object’s own properties first. If it doesn’t find it there, it checks the [Prototype](/AvreyBrown-401-advanced-javascript/seattle-javascript-401d32/wiki/Prototype), and so on up the prototype chain until it gets back to Object.prototype, which is the root delegate for most objects.
Method delegation can preserve memory resources because you only need one copy of each method to be shared by all instances.
Concatenative inheritance is the process of copying the properties from one object to another, without retaining a reference between the two objects. It relies on JavaScript’s dynamic object extension feature.
Cloning is a great way to store default state for objects: This process is commonly achieved using Object.assign(). Prior to ES6, it was common to use similar .extend() methods from Lodash, Underscore, or jQuery.
Functional Programming
Functional Programming is a style of writing programs by simply composing a set of functions.
Essentially, FP asks us to wrap virtually everything in functions, write lots of small reusable functions and simply call them one after the other to get the result like: (func1.func2.func3) or in a compose fashion, like: func1(func2(func3())).