Кастомные геттеры и сеттеры для объектов.

Простой способ отловить изменение свойства объекта или навесить дополнительные действия при изменении свойства. Небольшая заготовка для дата-биндинга или обсервинга.

var person = {
     name: "Zeus",
     _age: 50,
     get age() {
          console.log('custom getter works!');
          return this._age;
     },
     set age(value) {
          console.log('custom setter works!');
          this._age = value;
     }
}

console.log(person.age);
person.age = 20;

 

Использование цикла for .. in

Как и оператор in, цикл for in проходит по всей цепочке прототипов, обходя свойства объекта.

// Добавим свойство через Object.prototype
Object.prototype.atata = 1;
var test = {ohoho: 2};
for(var i in test) {
    console.log(i); // печатает и atata и ohoho
}

Примечание: Цикл for in не обходит те свойства объекта, у которых внутренний атрибут enumerable установлен в false; как пример — свойство length у массивов.

Далее

Интересные конструкции в Javascript

Я хотел бы поделиться с вами любопытными конструкциями на javascript,  которые помогут сократить количество кода, найти изящное решение, либо озадачить других js-программистов, работающих с вами на проекте.

Я ни в коем случае не призываю использовать их, чаще от этого больше вреда, чем пользы, но если вы столкнетесь с подобным в чужом коде, вы будете знать, что это такое и как работает.

Тернарные операторы

Думаю, всем известно, что это такое. Однако иногда хочется выполнить 2 каких-то действия или функции, вместо одного, тогда можно использовать оператор ‘|’.

var a = 5, b = 7;

a > b ? console.log('true') : console.log('false'); //false
var c = a > b ? 1 : 2; //c = 2
a < b ? console.log('true') | alert('Hi!') : console.log('false'); //напишет true в консоль и выведет алерт

Примечание: в древних javascript-движках выражение сравнения обязательно нужно было заключать в круглые скобки.

Далее

Initial commit или Добро пожаловать!

fr

Некоторое время назад я делал попытки вести свой блог на темы, посвященные веб-разработке. Однако, хватило меня ненадолго и энтузиазм быстро испарился. Из-за проблем с хостингом, старый блог исчез со всеми его немногочисленными постами. Сейчас, я решил плотно заняться изучением Javascript и сопутствующими технологиями. В этом блоге я буду делиться найденными решениями различных проблем, изучать различные алгоритмы, делать их реализации на JS и сравнивать быстродействие. Думаю, добавлю еще различные часто используемые сниппеты и заготовки для SPA(Single Page Application) на различных MVC-фреймворках, вроде Backbone, Angular, SAPUI 5 и т.д.