#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());