@kinojs
Начинающий разрабочтик, WEB

Как сделать свойство унаследованным объектом?

Друзья! Совсем не могу понять как такое сделать.

Нужно чтобы был на пример объект Room, у него было свойство cupboard, которое имело бы свои методы вроде delete, edit и прочее.

Room.cupboard.delete();

При этом нужно чтобы cupboard знал номер комнаты Room.number и другие свойства комнаты.
Спасибо.
  • Вопрос задан
  • 132 просмотра
Решения вопроса 1
pterodaktil
@pterodaktil
js developer
Не думаю, что красиво, но рабочий вариант
class Cupboard {
	constructor(props) {
		this._fromParent = { ...props };
    }

	delete() {
		console.log(this._fromParent);
    }

	refreshProps(props) {
		this._fromParent = { ...props }
    }

	//...
}

class Room {
	constructor() {
		this._number = 5;
		this._price = 500;
		this.cupboard = new Cupboard(this);
    }

	get number() {
		return this._number;
    }

	set number(value) {
		this._number = value;
		this.cupboard.refreshProps(this);
    }
}

const room = new Room();
room.cupboard.delete();
//{_number: 5, _price: 500}

room.number = 6
room.cupboard.delete()
//{_number: 6, _price: 500, cupboard: Cupboard}

Можно придумать через паттерн observable
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
function ROOM (n) {
	this.namber = n
	this.cupboard = {
		edit : function() {
			// body
		},
		delete : function() {
			// body
		}
	}
}

var Room = new ROOM(1);
console.log(Room);
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы