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

193
Visualizações
Tener problemas para entender el método de préstamo

tengo un problema para entender este código o con Method Borrowing ->

 function func() { [].join.call(arguments) //how does this works? {

unirse solo necesita un separador, ¿por qué estamos pasando this valor de contexto? y lo más interesante es que funciona!

hay alguien que me explique esto?

:)

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

0

El método .call() se usa en funciones, se comporta de manera similar a usar () para llamar a una función, como cuando ejecuta functionName() , sin embargo, le permite definir explícitamente qué es this dentro de la función , así por ejemplo:

 function functionName(arg) { console.log("this", this); // this {"foo": 1} console.log("arg", arg); // arg str } functionName.call({foo: 1}, "str");

Tenga en cuenta que arriba, el primer argumento para .call() define qué es this dentro de su función, y luego el segundo argumento en adelante define cuáles son los argumentos para functionName .

Podemos usar .call() en cualquier función, incluidas las que nos proporciona JavaScript. En su código, está usando [].join que expone (no llama) la función de join de matrices, es decir, le da acceso a la función de join definida en el objeto Array.prototype . Con eso en mente, su código podría reescribirse así para resaltar que [].join se usa solo para obtener la función de join del prototipo de matriz:

 function func() { const joinFn = Array.prototype.join; // or: [].join; console.log(joinFn.call(arguments)); } func('a', 'b', 'c'); // "a,b,c"

Internamente, el método .join() en matrices usa this dentro de él (similar a cómo functionName() usa this dentro de él) para determinar qué objeto/matriz necesita que sus elementos se "junten". En su ejemplo, no está llamando a .join directamente en su matriz vacía (es decir: [].join() ), sino que está usando la matriz vacía para acceder a la función .join y luego llamándola con el objeto de arguments por usando join.call(arguments) . Cuando hace esto, el this dentro del método .join() se establece en el objeto de arguments y el método de unión se llama sin argumentos, por lo que el separador predeterminado es , . Como el objeto arguments es similar a una matriz (tiene índices y una propiedad de length como una matriz), sus elementos se pueden unir de la misma manera que se pueden unir los elementos de una matriz.

Puede consultar la sección 23.1.3.15 de la especificación ECMAScript para obtener más detalles sobre cómo funciona internamente Array.prototype.join y cómo se hace genérico para manejar objetos similares a matrices y no solo matrices.

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