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

151
Visualizações
¿Qué devuelve este código JavaScript para las llamadas a las funciones bar, baz y biz?

Aprendiendo los fundamentos de JavaScript, confundido sobre lo que devuelven las llamadas de función. Tengo una idea de que f.bar devuelve 7 porque cuando se crea el objeto f, obtiene acceso a las funciones de Foo que tienen la palabra clave "this". También creo que f.baz devuelve un error porque esta función solo está disponible localmente y no usa la palabra clave "esto", lo que hace que no esté disponible fuera de Foo. f.biz Estoy confundido, pero sé que la palabra clave Prototipo permite la herencia de las propiedades de Foo.

Una explicación para cada llamada de función sería increíble, ¡gracias a todos!

 var Foo = function(a){ this.bar = () => { return a; } var baz = function(){ return a; } Foo.prototype = { biz: () => { return this.bar(); } } } var f = new Foo(7); f.bar();// what does this return? f.baz(); // what does this return? f.biz(); // what does this return?

about 4 years ago · Santiago Gelvez
1 Respostas
Responde à pergunta

0

Tal como está ahora, solo la función de bar funcionará según lo previsto.

La función baz está en una variable local, por lo que solo es accesible dentro de la función Foo como baz pero no como this.baz (las variables y las propiedades de instancia ( this.whatever ) no están conectadas de ninguna manera).

El caso de biz es un poco más complicado. Normalmente, así es más o menos cómo crearía un método prototipo, pero lo hizo en el lugar equivocado. Debería estar fuera de la función, porque tal como está ahora, es:

  • reasignado en cada llamada de new Foo() (innecesario)
  • asignado solo después de que se crea la instancia actual, por lo que tendrá efecto solo en la siguiente instancia (también si usó a en ella (que no debería), encontrará que siempre tiene la a de la llamada anterior)

Tampoco desea utilizar una función de flecha cuando desea "dejar que JS configure this " (las funciones de flecha copian this desde donde se definieron).

Entonces, para que el biz funcione, debe hacer esto:

 var Foo = function(a){ this.bar = () => { return a; } } Foo.prototype = { biz: function (){ return this.bar(); } } var f = new Foo(7); console.log(f.bar()); console.log(f.biz());

about 4 years ago · Santiago Gelvez 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