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

195
Vistas
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 Respuestas
Responde la pregunta

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 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