Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting

Как правильно обратиться к свойствам конструктора 1 из конструктора 2?

Приветствую!

В качестве тренировки, написал 2 конструктора с наследованием второго от первого. При попытке получить доступ к свойствам конструктора 1 из конструктора 2 - получаю `undefined`.

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

// конструктор 1
function Construct1() {
	// свойства
	this.constructor1 = 'Construct 1';
	this.property1 = 'property 1';
}

// метод 1
Construct1.prototype.method1 = function() {
	return `${this.constructor1} -> method 1 -> ${this.property1}`;
}

let construct1 = new Construct1();

// проверка метода 1
console.log(construct1.method1()); // 'Construct 1 -> method 1 -> property 1'

// конструктор 2
function Construct2() {
	// свойства
	this.constructor2 = 'Construct 2';
	this.property2 = 'property 2';
}

// наследование конструктора 2 от конструктора 1
Construct2.prototype = Object.create(Construct1.prototype);
Construct2.prototype.constructor = Construct2;

// метод 2
Construct1.prototype.method2 = function() {
	return `${this.constructor2} -> method 2 -> ${this.property2}`;
}

// метод 3 с наследованием метода 1
Construct1.prototype.method3 = function() {
	return this.method1();
}

let construct2 = new Construct2();

// проверка метода 2 и 3
console.log(construct2.method2()); // 'Construct 2 -> method 2 -> property 2'
console.log(construct2.method3()); // 'undefined -> method 1 -> undefined'
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
0xD34F
@0xD34F
Забыли вызвать родительский конструктор в потомке: Construct1.apply(this, arguments);.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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