Когда во втором примере ты пишешь:
Сообщение от GuardCat
|
test1=new Test;
|
this.__proto__ внутри конструктора начинает ссылаться на Test.prototype. А дальше ты бац и заменяешь Test.prototype на новый объект, но this.__proto__ по-прежнему ссылается на старый объект, в котором метода f нет. Вот в ошибке и написано, что его нет. В первом примере ты изменяешь уже существующий объект, и т. к. на него ссылаются и this.__proto__ и Test.prototype, изменения видны в обоих.
Сообщение от GuardCat
|
Мне не очень нравятся многоблочные определения псевдоклассов. Т.е. когда вначале определяют класс, блок закрывают, а затем определяют его прототип
|
прототип будет .... , короче, не надо так, бяка.