Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

196
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!