@Irene_kvlv

Как передать объект в класс js?

Подскажите, пож-ста, как можно передать объект в класс?

Например
const obj = {
  
    _sayHi() {
        console.log(`Hello, my name is ${this.name}!`);
    },

};

class Person {
    constructor(name, age) {
        this.name = name;
        this.age = age;
      
       if (this.age < 0 ) {
            this.age = 0;
        }
    }
}
  • Вопрос задан
  • 574 просмотра
Решения вопроса 1
RAX7
@RAX7
В качестве альтернативы наследованию можно использовать агрегацию
const obj = {
  _sayHi() {
    console.log(`Hello, my name is ${this.name}!`);
  }
};

class Person {
  constructor(name, age, methods) {
    this.name = name;
    this.age = age;
    this.methods = methods;

    if (this.age < 0) {
      this.age = 0;
    }
  }

  sayMyName() {
    this.methods._sayHi.call(this);
  }
}

new Person('Heisenberg', 52, obj);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Можно записать объект в свойство prototype временной функции и наследоваться от нее:
function fromPrototype(proto) {
    function F() {}
    F.protoype = proto;
    return F;
}

const obj = {
    _sayHi() {
        console.log(`Hello, my name is ${this.name}!`);
    },
};

class Person extends fromPrototype(obj) {
    constructor(name, age) {
        this.name = name;
        this.age = age;
      
       if (this.age < 0 ) {
            this.age = 0;
        }
    }
}
Ответ написан
lina666
@lina666
Изучаю веб ЯП.
Класс может наследоваться от класса
class Person {
  say() { console.log('person') }
}

class Man exntend Person {}

new Man().say() // person
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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