Начал изучать javascript. Прочитал много статей по основам ООП, после моего классического понимания ООП в jav'e или php в голове появилась путаница.
Сначала опишу как я понял то что прочитал, а потом задав вопрос. (поправьте если понял не правильно)
объект можно создавать 2умя основными способами: через функцию-конструктор и через языковой литерал (var a = {}).
Функция конструктор позволяет создать объект по шаблону который описан в её реализации оперируя со ссылкой this. this наследует свойства и методы объекта ссылка на который указана в свойстве prototype конструктора.
вот есть такой код:
function Child(){}
function Parent()
{
this.name = "Vasia";
}
var parent = new Parent();
//тут я указываю свойству конструтора prototype ссылку на объект parent
Child.prototype = parent;
var child = new Child();
alert(child.name);
Ну вот понятно что child и parent имеют право иметь свойства и методы (например name), потому что это ОБЪЕКТЫ.
Но как может быть свойство у функции? У конструктора Child?? Это же не объект. На данный момент я понимаю что да, этот код работает. Но по какой такой логике мы НЕ объекту указываем свойство(в данном случае св-во prototype для НЕ объекта Child). Как это работает на более нижнем уровне, на уровне интерпретатора языка? Вот что интересно, столько статей, а про это нет ни слова.