есть объекты.
а есть функции-конструкторы.
вот у функций-конструкторов(которые являются сами объектами, типа Function) есть свойство ptototype.оно есть только у функций, и влияет на создаваемые этими функциями-конструкторами объекты
у обычных же объектов нету свойтва prototype
есь внутренне своство(назовем его [[prototype]] к примеру), котороее ссылается на свойство prototype функции-конструктора, чоздавшей этот объект.если у объекта нету какого-то свойства, то оно ищется в объекте [[prototype]]. свойство [[prototype]] нигде не доступнов явном виде, и работать с ним напрямую невозможно(исключение:в мозилле оно доступно под именем __proto__), поэтому его имя для нас не так важно.
таким образом свойство prototype(не путать с [[prototype]])есть только у функций-конструкторов(любая функция может быть функцией-конструкотором, если внетри нее используются конструкция this)
Object - это функция конструктор тоже.она создает объект типа Object
Любая функция должна иметь prototype ссылающийся на объект
по умолчанию это экземпляр типа Object
но, можно заменить на любой другой свой объект.именно на объект,а не на функцию-конструктор.
свойство prototype функции-конструктора указывает какой объект должен быть в свойстве [[prototype]] создаваемого объекта.именно это [[prototype]] и называется прототипом объекта.
таким образом у всех объектов создаваемых одной функцией-конструктором прототип будет общий.
в свою очередь у этого прототипа есть свой прототип.в вершине этого дерева находится объект типа Object
вот так вот сумбурно попытался объяснить суть дела
если не прав, кто-нибудь исправьте
PS еще раз:свойство prototype функции-конструктора не является прототипом функции.но оно указывает какой объект будет прототипом создаваемых объектов
Последний раз редактировалось Gvozd, 15.03.2009 в 16:10.
|