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

156
Visualizações
Arrow Function returns undefined when called from an object but returns a string when called from a class instance

1. I am calling a function myDes() which is an Arrow Function inside an Object Cameras. It is returning undefined.

2. But when I call the function myDes() from a Class instance obj1 it returns a string - "abc".

In my understanding arrow function binds by default the properties of the parent function or the global scope, then why does it not return the price in the first example as it does name in the second?

Example 1 — Calling from an Object

const cameras = {
  price: 600,
  weight: 2000,
  myDes: () => {
    return `This canon camera is of ${this.price}`
  }
}

console.log(cameras.myDes()) // price undefined

Example 2 — Calling from an Instance of a Class

class Student {
  name = 'abc'
  myDes = () => {
    console.log(this.name)
  }
}

let obj = new Student
obj.myDes() // return abc

*

To the Comments Below suggesting some link reference for answers. What I meant since there is no parent function around the arrow function in the Class then how the arrow function is inheriting the properties of the class. To which a satisfied answer has been provided

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

0

In your first example, there is no parent function around the arrow function definition, so it does indeed bind to the global this. An arrow function is not a method of the object.

In your second example, you are using class field syntax. This is actually syntactic sugar for

class Student {
  constructor() {
    this.name = 'abc'
    this.myDes = () => {
      console.log(this.name)
    }
  }
}

where the parent function is the constructor of the class, whose this value refers to the instance. This is also the value that the this inside the arrow function will refer to.

about 4 years ago · Juan Pablo Isaza Relatório

0

As the comments to your question state, this inside arrow functions do not behave like you think. You may do this instead:

const cameras = {
  price:600,
  weight: 2000,
  myDes: function(){
    return `This canon camera is of ${this.price}`
  }
}

console.log(cameras.myDes())

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