Javascript - Object.create: мое понимание правильно?
Я пытаюсь полностью понять, как работают прототипы.
Это мое определение прототипа:
Встроенное свойство, которым обладают все объекты (кроме Базового объекта), которое указывает и ссылается на объект "proto{}", который является копией другого объекта, на свойства и методы которого можно затем ссылаться, если он не найден в исходном объекте.
Это верно? Особенно меня интересует вопрос "является копией другого объекта" - это означает, что JS Engine создает сохраненную копию объекта B в пространстве памяти, на которое указывает свойство прототипа объекта A для ссылки.
Теперь мои вопросы о Object.create
:
Насколько я понимаю, этот метод делает прототип (или сам объект?) Того объекта, на котором он используется, наследует (IOW, ссылается на копию переданного в Object) свойства и методы другого переданного объекта.
var john = Object.create(Person);
В приведенном выше коде john
Объект создан, и его свойство прототипа указывает на созданный объект, который имеет методы и свойства Person
объект? Или, по-другому, Object.create
делает копию Person
объект и помещает его в пространство памяти, свойство свойства prototype john
указывает на. Это правильное понимание того, что происходит?
Если так, то является ли причиной того, что копия объекта ("персона") сделана, что прототип john
указывает на то, что это позволяет изменять значения свойств и методов без перезаписи реквизитов / методов в Person
объект, с которым связан объект-прототип john
по наследству?
Я пытаюсь разобраться в этом, чтобы понять и стараюсь не слишком усложнять концепцию.
Вот рисунок, который я нарисовал, чтобы проиллюстрировать мое текущее понимание:
1 ответ
Нет, здесь нет копирования. Просто ударь эту часть:
Прототип: встроенное свойство, которое имеют все объекты
(кроме Базового объекта),которое указывает и ссылается наобъект "proto{}", который является копиейдругого объекта, на свойства и методы которого можно затем ссылаться, если он не найден в исходном объекте.,
Будь проще.
И да, поскольку существует прямая ссылка и больше ничего не происходит, это означает, что любые изменения унаследованных свойств объекта-прототипа будут динамически отражаться в объекте.