Показать сообщение отдельно
Старый 01.12.2001, 17:57
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 22  
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
one.new_param="one_param";
two.new_param="two_param";


да создается новое поле, локально относительно объекта, one, two

если вызвать

delete one.new_param, то поле new_param в объекте one будет удалено, и при вызове one.new_param, будет получено содержание поля прототипа.

Прототип, по умолчанию, это новосозданный объект, и он является субкласом объекта Object.prototype, можно предположить что для создании прототипа используется конструктор Object. Но это не однозначно.
чтобы убрать наследование создаваемого класса от верхнего Object. Нужно присвоить прототипу прототипа, неопределенное значение.

constructor_one.prototyoe.__proto__ = undefined;

теперь вернусь о поле пртототипа (суперкласса) и создоваемого объекта (субкласса)

если в объекте субклассе есть вызываемое поле (в нашем примере "new_param") то вызывается значение данного поля,
если такого поля нет, то вызываетя суперкласс (прототип) и вызывается одноименно поле, и так далее, вверх и вверх по иерархии, пока у объекта не будет прототипа.

Если на одном из этапов, цепочки наследования создать локальное поле, то можно управлять наследованием...
ну в общем все достаточно просто.