#
SetPrototypeOf
В JavaScript метод setPrototypeOf() используется для изменения прототипа существующего объекта. Прототип объекта — это ссылка на другой объект, который используется как базовый для поиска свойств. Метод setPrototypeOf() предоставляет возможность изменить эту связь.
Синтаксис: Object.setPrototypeOf(obj, prototype)
obj: Объект, прототип которого вы хотите изменить.prototype: Объект, который станет новым прототипом для obj. | Подробнее здесь |
#
Пример использования setPrototypeOf():
// Создаем объект с прототипом
const dog = {
bark: function () {
console.log("Woof!");
},
};
// Создаем объект, который будет иметь 'dog' в качестве прототипа
const myDog = Object.create(dog);
// Проверяем работу прототипа
myDog.bark(); // Вывод: "Woof!"
// Меняем прототип объекта
const cat = {
meow: function () {
console.log("Meow!");
},
};
Object.setPrototypeOf(myDog, cat);
// Проверяем измененный прототип
myDog.meow(); // Вывод: "Meow!"
В этом примере, myDog изначально имеет прототип dog, но мы изменяем его прототип на cat с использованием setPrototypeOf(). Теперь myDog имеет доступ к методу meow, который определен в прототипе cat.
Однако, стоит отметить, что изменение прототипа существующих объектов с использованием setPrototypeOf() может повлиять на производительность, и в большинстве случаев лучше создать новый объект с нужным прототипом с помощью create().
Пример:
const myDog = Object.create(dog);
const myCat = Object.create(cat);
// Объекты созданы с разными прототипами
myDog.bark(); // Вывод: "Woof!"
myCat.meow(); // Вывод: "Meow!"
Это более предпочтительный способ, поскольку он избегает изменений существующих объектов и создает новые объекты с нужными прототипами.