Я считаю, что namespace.ex2.method1 не является функцией.
Правильно.В JavaScript вы не напрямую не присваиваете прототипы объектам (хотя это становится возможным по мере принятия нового 5-го издания ; см. Ниже).Вместо этого вы устанавливаете прототипы в функциях конструктора, которые затем назначаются объектам, созданным этими функциями.Итак, если бы вы сделали
var obj = new namespace.ex2();
obj.method1();
... вы бы нашли метод.(Хотя нет причин, по которым вы не можете позвонить namespace.ex2.prototype.method1();
, если хотите.)
Этот косвенный подход несколько необычен для прототипного языка.ECMAscript 5-е издание действительно представляет средства создания объекта и установки его прототипа напрямую (Object.create
), но это довольно новое дополнение к языку.
Подробнее о прототипах "методы, «создание цепочек прототипов» и т. д., вы можете найти эту статью Крокфорда и эту довольно менее (но, возможно, более знакомую и, безусловно, прагматичную) одну по-настоящему вашейинтересное чтение.