'use strict';
function MakeObj() {
let x = 1;
}
MakeObj.prototype = { x: 4 };
let obj1 = new MakeObj();
let obj2 = new MakeObj();
obj2.__proto__ = obj1;
MakeObj.prototype = null;
console.log(obj2.x);
Пояснение
Строка MakeObj.prototype = null; не повлияла на объекты obj1 и obj2, ведь ссылки на объекты внутри свойств __proto__ остались прежними. obj1.__proto__ ссылается на объект { x: 4 }, а obj2.__proto__ ссылается на obj1.
Вообще, говорить, что __proto__ ссылается на что-то не совсем верно, ведь __proto__ - это лишь геттер-сеттер для скрытого свойства [[Prototype]].