давайте сначала объясним вторую часть вашего вопроса
на основе вашего ответа child
- это объект, а не функция
child = Object.create(parent)
что это будет делать?
1 - это создаст объект с именем child
сильный текст 2 - он будет использовать объект parent
в качестве прототипа __proto__
из объект child
, так что если parent
имеет свойство с именем lastName : Thomson
, то child
теперь имеет доступ к этому свойству через его свойство __proto__
, то же самое относится к любому методу / функции в объекте parent
, child
объект теперь имеет к нему доступ.
теперь к первой части:
child.prototype = Object.create(parent.prototype)
что это будет делать?
1 - это предполагает, что где-то в скрипте есть уже созданный объект с именем child
2 - он назначает свойство с именем prototype
объекту child
, так что теперь вы можете написать что-то вроде этого child.prototype
и получите некоторый результат
3 - Object.create(parent.prototype)
запускает преобразование / создание только что созданного вами свойства child.prototype
объекта и т. Если сделать __proto__
этого объекта равным parent.prototype
, который должен быть объектом, я имею в виду, что parent.prototype
должен быть объектом, чтобы это работало.
ПРИМЕЧАНИЕ:
экземпляры объектов (обычные объекты, такие как let obj = {};
) не имеют свойства .prototype
, но они автоматически наследуют нечто под названием __porto__
от своего конструктора, который, к сожалению, также называется прототипом
* С другой стороны, конструкторы / функции 1060 * имеют свойство
.prototype
, которым вы можете манипулировать, как и любым другим свойством, это свойство
.prototype
передается позже экземплярам этого конструктора / функции
, это довольно интересный топи c Я призываю вас углубиться в это, если вы хотите узнать больше о javascript.