¿Son las siguientes tres formas de 'construir una clase' efectivamente iguales? Si no, ¿cuáles podrían ser algunas de las diferencias más sutiles o no tan sutiles?
class Person { constructor(name, age) { this.name = name; this.age = age; } get_birth_year() { return new Date().getFullYear() - this.age; } } let p = new Person('Bob', 33); console.log(p.get_birth_year());
function Person(name, age) { this.name = name; this.age = age; } Person.prototype.get_birth_year = function() { return new Date().getFullYear() - this.age; } let p = new Person('Bob', 33); console.log(p.get_birth_year());
function Person(name, age) { let person = Object.create(Person.prototype); person.name = name; person.age = age; return person; } Person.prototype.get_birth_year = function() { return new Date().getFullYear() - this.age; } let p = Person('Bob', 33); console.log(p.get_birth_year());