Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

180
Vistas
Pregunta de JavaScript: ¿hay alguna forma de asignar un objeto a "esta" palabra clave sin utilizar los métodos de llamada, aplicación y vinculación?

Estoy tratando de crear un polyfill para los métodos de llamada, aplicación y vinculación.

 const user = { firstName: "Christopher", lastName: "Nolan", }; const fullName = function (place, country) { console.log( `${this.firstName} ${this.lastName} is from ${place}, ${country}.` ); };

// Usando un método de llamada

 fullName.call(user, "London", "UK");

// Volver a crear un método de llamada con el nombre de "_call"

 Function.prototype._call = function (...args) { const funcObj = this; const params = args.slice(1); return (function () { const obj = args[0]; // How can I point out the obj to "this" keyword inside a funcObj without using the bind method as I mentioned below. return funcObj.bind(obj, ...params)(); })(); }; fullName._call(user, "London", "UK");
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Sí. Solo usa

 var myObject = this;

Entiendo el problema que puedes tener. A veces, cuando desea utilizar el objeto 'esto', el contexto de 'esto' ha cambiado. Algunas personas usan

 var that = this;

Aquí hay más lectura para usted que va un poco más profundo.

https://dbwriteups.wordpress.com/2017/04/08/que-eso-significa-en-javascript/

about 4 years ago · Juan Pablo Isaza Denunciar

0

No estoy seguro de que sea una gran implementación, pero podría aprovechar el hecho de que, para un método de objeto, el alcance se establece automáticamente en el objeto sobre el que se invocó.

Con eso en mente, podría crear un objeto usando el alcance como prototipo y agregar la función original como método, luego invocar el método.

 const user = { firstName: "Christopher", lastName: "Nolan", }; const fullName = function (place, country) { console.log( `${this.firstName} ${this.lastName} is from ${place}, ${country}.` ); }; Function.prototype._call = function (scope, ...args) { // symbol for the method name to avoid name collisions const symbol = Symbol(); // create a new object from scope with the original function (this) as a method const temp = Object.create(scope, {[symbol]: { value: this }}); // inside the method "this" will point to "temp" which is (effectively) "scope" return temp[symbol](...args); } fullName._call(user, 'London', 'UK');

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda