Я немного работал с Javascript в прошлом, но даже первый день в App Academy открыл для меня много нового понимания и концепций, лежащих в основе js.
Переключение синтаксиса поначалу было утомительным после того, как я недавно так много работал с Ruby. Просто потребуется немного времени, чтобы перестроиться. Тем не менее, мне определенно напомнили, насколько снисходительным является синтаксис Javascript и как он может легко стать обоюдоострым мечом. На какое-то время мы застряли на ошибке, связанной с областью видимости объявленной переменной. Проблема: мы забыли var перед именем нашей переменной, что привело к чрезмерному расширению области действия. Это ошибка, которую я больше не совершу в ближайшее время.
Тем не менее, одна из самых крутых вещей, которые я сегодня узнал, — это использование свойства прототипа при создании js-объектов. Использование его сделало строительные объекты очень странными, но имело смысл в практическом контексте.
Вы можете объявить объект как таковой:
функция Cat (имя, владелец) { this.name = имя,
this.owner = владелец
this.scratch = function () { console.log(this.name + «цепляет вас когтями!»); };
};
Однако это означает несколько вещей. Прежде всего, сама функция клонируется для каждого нового создаваемого вами Cat, что занимает больше памяти. Кроме того, если вы когда-нибудь решите изменить метод царапин, он изменит его только для той кошки, для которой он был изменен.
Следовательно, решение состоит в том, чтобы изменить свойство прототипа Cat как таковое:
функция Cat (имя, владелец) { this.name = имя, this.owner = владелец
};
Cat.prototype.scratch = function () { console.log(this.name + «цепляет вас когтями!»);
};
Это изменяет параметр нуля для всех объектов Cat, которые будут созданы в будущем.
Первоначально опубликовано на newtonry.tumblr.com.