Object.setPrototypeOf()
Пример задачи
function Human(name, age) {
this.name = name;
this.age = age;
}
let user = Object.setPrototypeOf({}, new Human("John", "55"));
console.log(Object.keys(user));
console.log(user.name);
Анализ работы Object.setPrototypeOf()
Object.setPrototypeOf()
let user = { name: 'John' },
arr = [1, 2, 3];
console.log('Начальное состояние:');
console.log(user); // { name: 'John' }
console.log(user[1]); // undefined
console.log(user.__proto__); // {}
console.log(user.length); // undefined
Object.setPrototypeOf(user, arr); // устанавливаем arr как прототип для user
console.log('Измененное состояние:');
console.log(user); // Array { name: 'John' }
console.log(user[1]); // 2
console.log(user.__proto__); // [ 1, 2, 3 ]
console.log(user.length); // 3
arruserlength
Возвращаясь к нашему исходному примеру
HumanuserHumanusernameage
Метод Object.keys(user)вернет пустой массив, потому что у объекта userнет собственных перечисляемых свойств. Свойство user.nameвернет "John", потому что это свойство доступно через прототип, установленный методом Object.setPrototypeOf().
console.log(Object.keys(user)); // []
console.log(user.name); // John
Заключение
Object.setPrototypeOf()Object.setPrototypeOf()







