Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

316
Visualizações
Polyfill para bind incluye el uso de call o apply, ¿por qué?

El polyfill de bind que encuentro en línea es algo así como:

 Function.prototype.bind = function(obj, ...args) { const self = this; return function(...args2) { return self.apply(obj, [...args, ...args2]); }; }

donde usamos call/apply para llamar a la función.

Mi pregunta es ¿por qué no simplificarlo para que sea

 Function.prototype.myBind = function (obj, ...args) { obj.func = this; return function (...params) { return obj.func(...args, ...params) } };

porque internamente tanto la call como la apply asignan la función al objeto y luego la ejecutan.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Haciendo

 obj.func = this;

está mutando el objeto pasado. .bind no hace tal cosa, y casi siempre es una buena idea no mutar objetos que no "posee" (es decir, solo son utilizados por su propio código interno).

Sería bastante extraño que una llamada a .bind resulte en una mutación de un objeto que puede no estar relacionado con la persona que llama, por ejemplo:

 Function.prototype.myBind = function (obj, ...args) { obj.func = this; return function (...params) { return obj.func(...args, ...params) } }; const obj = { foo: 'foo' }; function fn() { console.log(this); } const boundFn = fn.myBind(obj); console.log(Object.keys(obj));

Es mucho más seguro y predecible evitar los efectos secundarios y mantener la función enlazada dentro del cierre de .bind que establecerla en un objeto externo que no espera que aparezca una nueva propiedad de repente.

En cuanto al título:

Polyfill para bind incluye el uso de call o apply, ¿por qué?

IIRC, .bind se introdujo en ES5. Pero .apply existe en ES3, y dado que básicamente todos los entornos que cualquiera usa son al menos ES3, usar .apply para polyfill .bind es seguro. (aunque el uso de la sintaxis de propagación/descanso no lo es, ya que es ES2015)

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda