Собственные функции-конструкторы и прототипы
Здравствуйте.
Допустим у нас есть собственный конструктор(пример из книги): var Person = function (name) { this.name = name; this.say = function () { return “I am “ + this.name; }; }; далее автор размышляет: Цитата:
class Person { constructor(name){ this.name = name; } say(){ return "I am " + this.name; } }; с одной стороны да, say(){} "пойдет" в прототип объекта, но с другой стороны, когда мы выполняем инструкцию Person.prototype.say = function () { return “I am “ + this.name; }; то выполняем её один раз и далее "клепаем" объекты чколько угодно, имея в прототипе say(), в ES6 say() тоже пойдет в прототип, но будет писаться каждый раз - я правильно понимаю? как на ES6 выполнить Person.prototype.say = function () { return “I am “ + this.name; }; внутри самого класса? например console.clear(); class ProtoPerson { constructor(){} say(){ return "I am " + this.name; }; }; class Person extends ProtoPerson { constructor(name){ super(); this.name = name; } }; let pers = new Person("Luca"); console.log( pers.say() ); console.log(pers); |
Цитата:
такая запись - именно эквивалент однократного выполнения Person.prototype.say = function () { return “I am “ + this.name; }; |
Часовой пояс GMT +3, время: 20:00. |