@bybyby

Как получить свойство родительского класса?

Вызов свойства родительского класса из дочернего возвращает свойство из конструктора, а мне необходимо получить свойство установленное методом родительского класса.

class A {
	constructor() {
		this.x = 1;
	}
	setX() {
		this.x = 2;
	}
}

class B extends A {
	constructor() {
		super();
	}
	getX() {
		console.log(this.x);
	} 
}

class C extends B {
	constructor() {
		super();
	}
	getX() {
		console.log(this.x);
	} 
}

const a = new A();
a.setX();
const b = new B();
b.getX(); // 1
const c = new C();
c.getX(); // 1
  • Вопрос задан
  • 259 просмотров
Решения вопроса 1
rockon404
@rockon404
Frontend Developer
a, b и с - это разные, не связанные объекты.

Хотите изменить x конкретного объекта, вызывайте setX() на конкретном объекте:
const b = new B();
b.setX();
b.getX(); // 2

const c = new C();
c.setX();
c.getX(); // 2


Вы, конечно, можете вынести x в прототип и менять значение прототипа статическим методом:
class A {
  static setX() {
    A.prototype.x = 2;
  }
}

A.prototype.x = 1;


class B extends A {
  getX() {
    console.log(this.x);
  } 
}

class C extends B {
  getX() {
    console.log(this.x);
  } 
}

A.setX();
const b = new B();
b.getX(); // 2
const c = new C();
c.getX(); // 2
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы