fork(18) download
  1. Смотри, как надо такое отлаживать. Переходим на страницу просмотра кода без редактора http://j...content-available-to-author-only...n.com/gazucolegusu/1 и открываем отладчик (Ctrl + Shift + I). В нем ставим режим «остановка при исключении» (в Хроме это круглая кпопка с паузой внизу, в фаерфоксе — пункт меню на вкладке Debugger). Перезагружаем страницу чтобы запустить скрипт.
  2.  
  3. Вывалившись в отладчик, изучаем ситуацию (точнее что хранится в Element). По моим ощущениям, в Хроме отладчик проще и лучше работает, в фаерфоксовом я путаюсь.
  4.  
  5. Там мы увидим, что у element есть Powerhouse в прототипе а, далее — Object. То есть Powerhouse ни от чего не унаследован.
  6.  
  7. > у Powerhouse.prototype.__proto__ == ElementsNetwork
  8. надо проверять element.__proto__.__proto__ в момент останова. __proto__ — нестандартное свойство, не работает в Хроме, стандартный етод это Object.getPrototypeOf()
  9.  
  10. Ну и понятно почему:
  11.  
  12. > Powerhouse.prototype = Object.create(ElementsNetwork.prototype);
  13. У тебя эта строчка зачем-то в конструкторе. То есть при первом вызове
  14.  
  15. var x = new Powerhouse();
  16.  
  17. Пока эта строчка не выпонилась, Powerhouse.prototype = {...} (обычный объект с прототипом Object, значение по умолчанию), и цепочка прототипов для x имеет вид
  18.  
  19. x -> Powerhouse -> Object
  20.  
  21. У Powerhouse в этот момент в prototype ничего нет и потому получается такой объект.
  22.  
  23. Не настраивай прототипы в конструкторе, это делается в глобальном коде 1 раз до начала основной программы.
  24.  
  25. Ну и у меня ощущение, что ты не понимаешь, как работают прототипы. Работают они очень просто: в момент вызова new прототипом нового объекта становится то, что было в этот момент в свойстве prototype функции-конструктора.
Success #stdin #stdout 0.02s 20568KB
stdin
Standard input is empty
stdout
Смотри, как надо такое отлаживать. Переходим на страницу просмотра кода без редактора http://j...content-available-to-author-only...n.com/gazucolegusu/1 и открываем отладчик (Ctrl + Shift + I). В нем ставим режим «остановка при исключении» (в Хроме это круглая кпопка с паузой внизу, в фаерфоксе — пункт меню на вкладке Debugger). Перезагружаем страницу чтобы запустить скрипт.

Вывалившись в отладчик, изучаем ситуацию (точнее что хранится в Element). По моим ощущениям, в Хроме отладчик проще и лучше работает, в фаерфоксовом я путаюсь.

Там мы увидим, что у element есть  Powerhouse в прототипе а, далее — Object. То есть Powerhouse ни от чего не унаследован.

>  у Powerhouse.prototype.__proto__ == ElementsNetwork
надо проверять element.__proto__.__proto__ в момент останова. __proto__ — нестандартное свойство, не работает в Хроме, стандартный етод это Object.getPrototypeOf()

Ну и понятно почему: 

> Powerhouse.prototype = Object.create(ElementsNetwork.prototype);
У тебя эта строчка зачем-то в конструкторе. То есть при первом вызове 

var x = new Powerhouse();

Пока эта строчка не выпонилась, Powerhouse.prototype = {...} (обычный объект с прототипом Object, значение по умолчанию), и цепочка прототипов для x имеет вид

x -> Powerhouse -> Object

У Powerhouse в этот момент в prototype ничего нет и потому получается такой объект. 

Не настраивай прототипы в конструкторе, это делается в глобальном коде 1 раз до начала основной программы.

Ну и у меня ощущение, что ты не понимаешь, как работают прототипы. Работают они очень просто: в момент вызова new прототипом нового объекта становится то, что было в этот момент в свойстве prototype функции-конструктора.