Я столкнулся с странным фрагментом кода, который я совсем не понимаю, вот он:
var obj = function() {};
obj.prototype.x = 5;
var instance1 = new obj();
obj.prototype = {y: 6};
var instance2 = new obj();
console.log(instance1.x, instance1.y, instance2.x, instance2.y);
// 5, undefined, undefined, 6
Теперь вопросы:
- Почему этот журнал
5, undefined, undefined, 6
вместоundefined, 6, undefined, 6
? - Почему замена прототипа не меняет прототип всех экземпляров объекта, как это обычно бывает?
- Что делает двигатель V8, шаг за шагом, в этом коде?
- EDIT: Как я могу изменить прототип всех экземпляров?
Каждое объяснение оценено.