0
Prototype chain inheritance and apply() call()
Difference and method of prototype inheritance and apply() inheritance
1 ответ
+ 1
apply() lets you set any value to implicit function parameter named `this`, which is supposed to point to method owner.
When you execute `myObject.myMethod(arg1, arg2)`, and this method actually is not defined, the interpreter will look for method with name `myMethod` in object's prototype, than in prototype's prototype and so on. If it is found in a prototype, something like this (very roughly) will be executed: `myObject.__proto__.myMethod.apply(myObject. [arg1, arg2])`
apply() must be used because otherwise `this` inside called method will point to prototype, not our object.
You can call any function from object's method and give it the object in `this` variable using apply(). Such calls look like customized inheritance.