# 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!"

Это более предпочтительный способ, поскольку он избегает изменений существующих объектов и создает новые объекты с нужными прототипами.