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{}", который является копией другого объекта, на свойства и методы которого можно затем ссылаться, если он не найден в исходном объекте.,

Будь проще.

И да, поскольку существует прямая ссылка и больше ничего не происходит, это означает, что любые изменения унаследованных свойств объекта-прототипа будут динамически отражаться в объекте.

Другие вопросы по тегам