Я немного работал с 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.