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