Как первый объект может использовать метод второго объекта?

#javascript #object

Вопрос:

используя Object.setPrototypeOf(), игрок 2 может использовать метод игрока 1, но как игрок 1 может использовать метод игрока 2 в этом примере?

 let player1 = {
  kick() {
    return 'kicking..';
  }
};


let player2 = {
  smash() {
    return 'smashing..';
  }
};

Object.setPrototypeOf(player2, player1);

console.log(player2.kick());
 

Комментарии:

1. «как игрок 1 может использовать метод игрока 2 в этом примере?» Он не может, player1 не имеет прямой или косвенной ссылки player2 .

Ответ №1:

Вместо изменения прототипа вы можете скопировать свойства одного объекта в другой с помощью Object.assign() :

 const player1 = {
  kick() {
    return 'kicking..';
  }
};


const player2 = {
  smash() {
    return 'smashing..';
  }
};

Object.assign(player2, player1);
Object.assign(player1, player2);

console.log(player2.kick());
console.log(player1.smash());