Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Наследование от класса родителя внутри объекта. (https://javascript.ru/forum/misc/78463-nasledovanie-ot-klassa-roditelya-vnutri-obekta.html)

Pavel_Hi 17.09.2019 18:06

Наследование от класса родителя внутри объекта.
 
Всем привет, подскажите пожалуйста, как создать новый класс внутри объекта который будет унаследовать функции родительского класса?

Вот пример.
let obj = {
    Users: class {
        constructor() {...} 
        getHello () {
            return "Hello"
        }
        getBuy() {
            return "Goodbye" 
        }
    },
    // этот кусок кода не верный, тут надо создать новый класс
    UsersMans:class UsersMans extends this.Users:{ 
         constructor(){
               super()
          }
    }
}

Нужно создать внутри объекта obj класс UsersMans и в тоже время унаследовать функции родителя Users.
class UsersMans extends this.Users так тоже не верно
Подскажите пожалуйста:)

Pavel_Hi 17.09.2019 19:24

Спасибо за ответ, но вылазит ошибка:

Uncaught SyntaxError: Unexpected token .
Ругается на точку

Malleys 17.09.2019 20:26

Цитата:

Сообщение от Pavel_Hi
class UsersMans extends this.Users так тоже не верно

У вас же явно this указывает не на obj. Объявите классы, а затем создайте нужный объект...
{
	class Users {
		constructor() {}
		getHello() {
			return "Hello";
		}
		getBuy() {
			return "Goodbye";
		}
	}

	class UsersMans extends Users {
		constructor() {
			super();
		}
	}

	let obj = { Users, UsersMans };
	console.log(obj);
}


UPD JavaScript — это не Java, вы можете использовать геттеры...
{
	class Users {
		constructor() {}
		get hello() {
			return "Hello";
		}
		get buy() {
			return "Goodbye";
		}
	}

	class UsersMans extends Users {
		constructor() {
			super();
		}
	}

	let obj = { Users, UsersMans };
	console.log(obj);
}


UPD2 Также исправьте имена классов!
{
	class User {
		constructor() {}
		get hello() {
			return "Hello";
		}
		get buy() {
			return "Goodbye";
		}
	}

	class UserMan extends User {
		constructor() {
			super();
		}
	}

	let obj = { User, UserMan };
	console.log(new obj.User, new obj.UserMan);
}

Pavel_Hi 18.09.2019 15:16

Спасибо вам огромное!!
Все работает!!:dance:


Часовой пояс GMT +3, время: 14:58.