Объект.Создайте вызывающую функцию с помощью прототипа

#javascript

Вопрос:

Оке, у меня это работает:

 const personProto2 = {  calAge() {  console.log(2021 - this.birthday);  }, };  
 const rein = Object.create(personProto2); rein.name = "Rein"; rein.birthday = 1945; rein.calAge();  

Но если я сделаю это:

 const Person = function (name, birthday) {  this.name = name;  this.birthday = birthday; };  Person.prototype.calAge = function () {  console.log(2021 - this.birthday); };  
 const rein = Object.create(Person); rein.name = "Rein"; rein.birthday = 1945; rein.prototype.calAge();  

Это не работает. Но функция — это также и объект. И у объекта также есть прототип.

Так почему же второй пример не работает?

Ответ №1:

Я думаю, что вы имели в виду использование new при создании пустого простого объекта JavaScript.

new Оператор позволяет создать экземпляр определенного пользователем типа объекта или одного из встроенных типов объектов, который имеет функцию конструктора. теперь вы можете вызвать calAge метод.

 function Person(name, birthday) {  this.name = name;  this.birthday = birthday; };  Person.prototype.calAge = function () {  console.log(2021 - this.birthday); };  const rein = new Person("Rein", 1945); rein.calAge(); 

Комментарии:

1. Спасибо. А, оке. Таким образом, функция-это объект. Но функция name(){} не создает объект с помощью Object.create. И {} с помощью Object.create создает объект.