Показать сообщение отдельно
  #5 (permalink)  
Старый 11.07.2012, 15:35
Аспирант
Отправить личное сообщение для almac Посмотреть профиль Найти все сообщения от almac
 
Регистрация: 29.06.2012
Сообщений: 31

Плюсы:
- удобный красивый код

Минусы:
- код плохо оптимизирован (лучше использовать прототипы)
* представьте, что вам придется создать 1000 объектов Animal, и каждый из них продублирует создание КАЖДОГО свойства (то есть некоторые методы и свойства будут создаваться 1000 раз!)
* зачем нужен метод animal.getFood, если он возвращает PUBLIC переменную?
* лишняя самовызывающаяся функция (рядом с комментарием constructor); помните, что функция - это объект в Javascript, и вы создаете лишний объект, без которого вполне можно обойтись
* Animal.voice по идее - статичный метод, и его нужно убрать за пределы конструктора объекта, а не инициализировать при каждом создании объекта Animal

СЕРЬЕЗНАЯ ОШИБКА:
- дополните ваш код следующим:
var horse2 = new Horse();
horse2.getFood();

По идее должна создасться еще одна лошадь с переопределенным методом getFood, но после того как вы создали первую лошадь и указали Horse = Animal; все ваши последующие объекты Horse становятся простыми Animal. Вобщем, никакого наследования на самом деле не получится тут.

Что делать? Использовать прототипы. Очень тяжело для того, кто привык работать с другими языками программирования типа Java, C++, но лучше потратить несколько дней на понимание прототипов.
Ответить с цитированием