Estoy tratando de vincular la palabra clave this de una función y usar la función como con la notación de punto de objeto (ya que las funciones también son objetos). Descubrí usando el objeto literal 'get' para hacer algo como: myFunction.whatever (en lugar de myFunction().whatever).
El código es:
let template = {name: "William"}; let aux = function(){} callTo = aux.bind(template); Object.defineProperty(callTo.prototype, "scream", { get: function() { console.log(this); return "Hi, " + this.name; } }); myObj = new callTo(); myObj.scream;Esto provoca el error: " Object.defineProperty llamado en no objeto ". Sin embargo, si enlazo cada propiedad definida con "get", funcionará correctamente.
let template = {name: "William"}; let callTo = function(){} Object.defineProperty(callTo.prototype, "scream", { get: function() { console.log(this); return "Hi, " + this.name; }.bind(template) }); myObj = new callTo(); myObj.scream; // Outputs Hi WilliamEl enfoque de trabajo funciona, pero me obliga a agregar un enlace () al final de cada propiedad. Entonces la pregunta es:
¿Por qué falla el primer código?