[Advanced JS] - Prototypal Chain and Inheritance in JavaScript - Classical OOP
Колеги, имам доста генерален въпрос, че нещо ми убягва.
В ситуация на псевдо-класическо ООП накратко структурираме така:
Function.prototype.extends = function(parent) { this.prototype = Object.create(parent.prototype); this.prototype.constructor = this };
-------- parent--------
function Person(name){ this._name = name; }
Person.prototype.info = function (){
return "This is "+ this._name
};
------- child--------------
function Student (name, age) {
Person.call(this, name);
this._age = age;
}
Student.prototype.info = function info() { return Person.prototype.info.call(this) +", Age: "+ this._age; }
и тук е въпросът: какво ми дава тогава Student.extends(Person) освен информация за __proto__ към parent (в случая към Person) при положение, че после ползваме call() и пак реално за вързани. Даже ако напиша Student.extends(Person) след Student.prototype.info .....функцията Student.info() връща резултат от Person.info() т.е. въобще не влиза при инфо-то на студента. Пфу ... омешана работа.