¿Qué hace la new palabra clave que permite el siguiente enlace en this objeto:
function Person(first, last) { this.first = first; this.last = last; } Person.prototype.greet = function() { console.log(`Hello, ${this.first} ${this.last}.`); }; let p = new Person('Tom', 'Jones'); p.greet(); Mientras que sin la new palabra clave, this.first generaría un error ya que no está definido. Conceptualmente hablando, ¿qué es lo new que hace aquí en cómo modifica la función?
Sin new :
function Person(first, last) { this.first = first; this.last = last; } Person('Tom', 'Jones'); // TypeError: Cannot set property 'first' of undefined Y sin usar new looks, la siguiente es una forma cruda de simularlo:
function Person(first, last) { this.first = first; this.last = last; return this; } Person.prototype.greet = function() { console.log(`Hello, ${this.first} ${this.last}.`); }; Person.prototype.greet.call(Person.call({}, 'Tom', 'Jones'));