LHS
LHS

Reputation: 23

JavaScript Class properties inside constructor

Defined one property outside the constructor like name, and one inside like this.id, but when i initialized, I got property, which was outside the constructor.

I created one class person and defined a property name (not in constructor) like this

class Person {
  name;
}

let instance_ = new Person()
console.log(instance_)

I got output

Person {name: undefined}

Then, I defined other class Employee and defined a property id (in constructor)

class Employee {
  constructor() {
    this.id
  }
}

let instanceEmp_ = new Employee()
console.log(instanceEmp)

The output I got

Employee {} //Didn't get id property

I didn't get id property in class Employee. Why?

Upvotes: 0

Views: 53

Answers (2)

Konrad
Konrad

Reputation: 24691

You have to assign something into that property, otherwise js thinks it's a getter

class Employee {
  constructor() {
    this.id = undefined
  }
}

let instanceEmp = new Employee()
console.log(instanceEmp)

Upvotes: 1

ABDELLATIF LAGHJAJ
ABDELLATIF LAGHJAJ

Reputation: 97

One solution is to pass an id variable to the constructor:

class Employee {
   constructor(id) {
      this.id = id;
   }
}

let instanceEmp = new Employee()
console.log(instanceEmp) // Employee {id: undefined}

Upvotes: 1

Related Questions