#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 создает объект.