Современные способы установки и прямого доступа к прототипу это:
-
Object.create(proto[, descriptors]) – создаёт пустой объект со свойством
[[Prototype]]
, указанным какproto
(может бытьnull
), и необязательными дескрипторами свойств. -
Object.getPrototypeOf(obj) – возвращает свойство
[[Prototype]]
объектаobj
(то же самое, что и геттер__proto__
). -
Object.setPrototypeOf(obj, proto) – устанавливает свойство
[[Prototype]]
объектаobj
какproto
(то же самое, что и сеттер__proto__
).
Замыкать цепочку прототипов нельзя, потому что это вызовет ошибку.