<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://support.qbpro.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82_Js</id>
	<title>Объект Js - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://support.qbpro.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82_Js"/>
	<link rel="alternate" type="text/html" href="https://support.qbpro.ru/index.php?title=%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82_Js&amp;action=history"/>
	<updated>2026-05-26T20:28:47Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.38.1</generator>
	<entry>
		<id>https://support.qbpro.ru/index.php?title=%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82_Js&amp;diff=1032&amp;oldid=prev</id>
		<title>imported&gt;Vix: Новая страница: «Все есть объекты. ==Словарь, или как не сломать мозг читая статью== *'''Паттерн''' (англ. 'pattern …»</title>
		<link rel="alternate" type="text/html" href="https://support.qbpro.ru/index.php?title=%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82_Js&amp;diff=1032&amp;oldid=prev"/>
		<updated>2013-09-09T20:36:08Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «Все есть объекты. ==Словарь, или как не сломать мозг читая статью== *&amp;#039;&amp;#039;&amp;#039;Паттерн&amp;#039;&amp;#039;&amp;#039; (англ. &amp;#039;pattern …»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Все есть объекты.&lt;br /&gt;
==Словарь, или как не сломать мозг читая статью==&lt;br /&gt;
*'''Паттерн''' (англ. 'pattern — образец, шаблон, система) - Смысл термина «паттерн» больше уже чем просто «образец», и варьируется в зависимости от области знаний, в которой используется. Паттерн (информатика) — эффективный способ решения характерных задач проектирования, в частности проектирования компьютерных программ.&lt;br /&gt;
==Полезные эпитеты==&lt;br /&gt;
*memcached даёт замечательную возможность автоматического удаления данных, когда у них заканчивается срок годности. В MongoDd придётся это отслеживать руками. Мне кажется, что пусть лучше каждое приложение будет занято своими обязанностями.&lt;br /&gt;
*ещё одна особенность, которая доставляет неудобства — это возврат ошибок из асинхронного кода. Для сравнения, в PHP весь код выполняется синхронно, поэтому отловить ошибку на любом уровне вложенности можно с помощью конструкции try-catch. Мы можем завернуть в неё работу контроллера и при возникновении исключительной ситуации сделать throw, и ошибка «всплывёт» к ожидающему её обработчику, который покажет пользователю красивую страничку позора. Несмотря на то, что в JavaScript тоже есть конструкция try-catch, нам она не поможет, т.к. большая часть кода работает асинхронно (операции ввода/вывода). При этом исключительные ситуации, как правило, возникают не при вызове метода, а при работе его callback`а, который выполняется уже вне конструкции try-catch. Для передачи информации об ошибках в Node.JS принято использовать первый параметр callback-функции. Т.е. если у нас возникла ошибка, мы вызываем callback-функцию либо с одним единственным параметром, описывающем её, либо первый параметр выставляем в undefined/null, а в последующих передаём результаты работы нашего функционала.&lt;br /&gt;
&lt;br /&gt;
==Объекты.==&lt;br /&gt;
&lt;br /&gt;
'''var &amp;lt;имя_объекта&amp;gt; = new &amp;lt;Тип_объекта&amp;gt; ('Привет мир');'''&lt;br /&gt;
&lt;br /&gt;
Пример создания объектов разных типов: &lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
| wight=&amp;quot;250px&amp;quot;| &amp;lt;center&amp;gt;'''Явное создание'''&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;center&amp;gt;'''Неявное создание'''&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;| &amp;lt;center&amp;gt;'''Число'''&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| var num = new Number(12345.6789);&lt;br /&gt;
| var num = 12345.6789;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;| &amp;lt;center&amp;gt;  '''Булево значение'''&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|var c = new Boolean(true);&lt;br /&gt;
|var bul = true;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;| &amp;lt;center&amp;gt;  '''Функция'''&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|var fun = new Function('x', 'var p = x');&lt;br /&gt;
|var fun = function(x){var p = x}&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;| &amp;lt;center&amp;gt;  '''Массив'''&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|var arr = new Array('a', 'b', 'c');&lt;br /&gt;
|var arr = ['a', 'b', 'c'];&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;| &amp;lt;center&amp;gt;  '''Объект'''&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|var obj = new Object();&lt;br /&gt;
|var obj = {};&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Методы (функции)==&lt;br /&gt;
===arguments===&lt;br /&gt;
&lt;br /&gt;
Переменная, доступная внутри функции и содержащая аргументы и ссылку на саму функцию.&lt;br /&gt;
Вы можете обращаться к аргументу по номеру, начиная от 0. При этом arguments содержит не объявленные, а реально переданные аргументы.&lt;br /&gt;
&lt;br /&gt;
Следующий пример выведет реально переданные три аргумента, несмотря на то, что в функции их всего два.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 function func(a,b) {&lt;br /&gt;
   alert(arguments[0])&lt;br /&gt;
   alert(arguments[1])&lt;br /&gt;
   alert(arguments[2])&lt;br /&gt;
 }&lt;br /&gt;
 func(1,2,3)&lt;br /&gt;
&lt;br /&gt;
Кроме цифровых индексов, у arguments есть свойство length, такое же как у массива.&lt;br /&gt;
&lt;br /&gt;
Благодаря этому можно вызывать функции с переменным числом параметров. В следующем примере функция возвращает сумму всех аргументов.&lt;br /&gt;
&lt;br /&gt;
Пример: сумма аргументов&lt;br /&gt;
&lt;br /&gt;
 function sum() {&lt;br /&gt;
   var s = 0&lt;br /&gt;
   for(var i=0; i&amp;lt;arguments.length; i++) s += arguments[i]&lt;br /&gt;
   return s&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
Несмотря на доступ по индексу и наличие свойства length, arguments не является массивом, т.е не принадлежит типу Array.&lt;br /&gt;
&lt;br /&gt;
Поэтому для arguments нельзя напрямую вызвать методы этого класса:&lt;br /&gt;
&lt;br /&gt;
 arguments.pop() // ошибка !&lt;br /&gt;
Можно, однако, вызвать методы Array через apply/call:&lt;br /&gt;
&lt;br /&gt;
 var args = Array.prototype.slice.call(arguments)&lt;br /&gt;
Ссылка на функцию arguments.callee&lt;br /&gt;
&lt;br /&gt;
Кроме аргументов, arguments содержит ссылку на выполняющуюся функцию.&lt;br /&gt;
&lt;br /&gt;
Ее можно использовать для задания и чтения статических свойств.&lt;br /&gt;
&lt;br /&gt;
В следующем примере для этого используется статическое свойство called.&lt;br /&gt;
&lt;br /&gt;
Пример: подсчет количества выполнений&lt;br /&gt;
&lt;br /&gt;
 function func() {&lt;br /&gt;
    arguments.callee.called++&lt;br /&gt;
 }&lt;br /&gt;
 func.called = 0;&lt;br /&gt;
 func()&lt;br /&gt;
 func()&lt;br /&gt;
 alert(func.called) // 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Операторы&lt;br /&gt;
В ECMAScript имеются как операторы, использующие в качестве названий ключевые слова, так и операторы, использующие в качестве названий знаки препинания.&lt;br /&gt;
====Классификация операторов====&lt;br /&gt;
По убыванию приоритета операторы ECMAScript можно разбить в следующие группы:&lt;br /&gt;
:. (доступ к свойству),[] (доступ к свойству),() (вызов функции), new (создание нового объекта),&lt;br /&gt;
:++ (инкремент), -- (декремент), - (унарный минус), + (унарный плюс), ~ (поразрядное дополнение), ! (логическое дополнение), delete (удаление свойства), typeof (определение примитивного типа данных), void (возврат неопределённого значения),&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; (умножение), / (деление), % (остаток от деления),&lt;br /&gt;
:+ (сложение), - (вычитание), + (конкатенация строк),&lt;br /&gt;
:&amp;lt;&amp;lt; (сдвиг влево), &amp;gt;&amp;gt; (сдвиг вправо с расширением знакового разряда), &amp;gt;&amp;gt;&amp;gt; (сдвиг вправо с дополнением нулями),&lt;br /&gt;
:&amp;lt; (меньше), &amp;lt;= (меньше или равно), &amp;gt; (больше), &amp;gt;= (больше или равно), instanceof (проверка типа объекта), in (проверка наличия свойства),&lt;br /&gt;
:== (проверка на равенство), != (проверка на неравенство), === (проверка на идентичность), !== (проверка на неидентичность),&lt;br /&gt;
:&amp;amp; (поразрядная конъюнкция),&lt;br /&gt;
:^ (поразрядное сложение по модулю 2),&lt;br /&gt;
:| (поразрядная дизъюнкция),&lt;br /&gt;
:&amp;amp;&amp;amp; (конъюнкция),&lt;br /&gt;
:|| (дизъюнкция),&lt;br /&gt;
:?: (тернарная условная операция),&lt;br /&gt;
:= (присваивание), *=, /=, +=, -=, &amp;lt;&amp;lt;=, &amp;gt;&amp;gt;=, &amp;gt;&amp;gt;&amp;gt;=, &amp;amp;=, ^=, |= (присваивание с операцией),&lt;br /&gt;
:, (множественное вычисление)[17].&lt;br /&gt;
&lt;br /&gt;
Операторы ++, --, -, +, ~, !, delete, typeof, void, ?:, =, *=, /=, +=, -=, &amp;lt;&amp;lt;=, &amp;gt;=, &amp;gt;&amp;gt;&amp;gt;=, &amp;amp;=, ^=, |= правоассоциативны (то есть для них a op b op c эквивалентно a op (b op c)). Остальные операторы ECMAScript левоассоциативныe.&lt;br /&gt;
&lt;br /&gt;
По арности операторы ECMAScript делятся на следующие группы:&lt;br /&gt;
:унарные (delete, void, typeof, ++, --, - (унарный минус), + (унарный плюс), ~, !, new),&lt;br /&gt;
:бинарные (., [], (), *, /, %, + (сложение), - (вычитание), + (конкатенация строк), &amp;lt;&amp;lt;, &amp;gt;&amp;gt;, &amp;gt;&amp;gt;&amp;gt;, &amp;lt;, &amp;lt;=, &amp;gt;, &amp;gt;=, instanceof, in, ==, !=, ===, !==, &amp;amp;, ^, |, &amp;amp;&amp;amp;, ||, =, *=, /=, +=, -=, &amp;lt;&amp;lt;=, &amp;gt;=, &amp;gt;&amp;gt;&amp;gt;=, &amp;amp;=, ^=, |=, ,),&lt;br /&gt;
:тернарные (?:),&lt;br /&gt;
:операторы, не имеющие фиксированного количества операндов (()).&lt;br /&gt;
По положению знака операции относительно операндов операторы ECMAScript делятся на следующие группы:&lt;br /&gt;
:префиксные (например, new, ++ (префиксный инкремент),&lt;br /&gt;
:инфиксные (например, +, -),&lt;br /&gt;
:постфиксные (например, ++ (постфиксный инкремент), -- (постфиксный декремент).&lt;br /&gt;
&lt;br /&gt;
Также операторы классифицируются по типу операндов и по характеру осуществляемого действия.&lt;br /&gt;
&lt;br /&gt;
====Особенности операторов ECMAScript====&lt;br /&gt;
&lt;br /&gt;
В ECMAScript нет оператора, позволяющего проверить, относится ли свойство непосредственно к объекту или является унаследованным. &lt;br /&gt;
&lt;br /&gt;
Такая проверка осуществляется с помощью метода hasOwnProperty(). В связи с тем, что данный метод не является оператором, он может быть переписан любым другим свойством.&lt;br /&gt;
&lt;br /&gt;
Оператор + является единственным арифметическим оператором в языке, который перегружен для строковых аргументов. Если хотя бы один из операндов — строка, + действует как конкатенатор, в противном случае выполняется сложение.&lt;br /&gt;
&lt;br /&gt;
В отличие от языков, где void является типом данных, в ECMAScript это оператор, возвращающий значение undefined.&lt;br /&gt;
&lt;br /&gt;
Оператор == осуществляет проверку на равенство по алгоритму, состоящему из 10 шагов, подразумевающего в ряде случаев преобразование типов, что, в конечном счёте, может привести к неочевидным результатам.&lt;br /&gt;
&lt;br /&gt;
Пример результатов работы == (во всех перечисленных случаях значением оператора === с теми же аргументами будет false):&lt;br /&gt;
 alert(&amp;quot;NaN&amp;quot; == NaN);       // false&lt;br /&gt;
 alert(NaN == NaN);         // false&lt;br /&gt;
 alert(true == 1);          // true&lt;br /&gt;
 alert(true == 42);         // false&lt;br /&gt;
 alert(null == 0);          // false&lt;br /&gt;
 alert(0 == &amp;quot;&amp;quot;);            // true&lt;br /&gt;
 alert(&amp;quot;&amp;quot; == 0);            // true&lt;br /&gt;
 alert(&amp;quot;false&amp;quot; == false);   // false&lt;br /&gt;
 alert(false == 0);         // true&lt;br /&gt;
 alert(undefined == false); // false&lt;br /&gt;
 alert(null == false);      // false&lt;br /&gt;
 alert(undefined == null);  // true&lt;br /&gt;
 alert(&amp;quot; \t\r\n &amp;quot; == 0);    // true&lt;br /&gt;
&lt;br /&gt;
==Работа с массивами==&lt;br /&gt;
===push===&lt;br /&gt;
&lt;br /&gt;
'''array.push( elem1, elem2, ... )'''&lt;br /&gt;
&lt;br /&gt;
Эти элементы будут добавлены в конец массива. Он добавляет элементы, начиная с текущей длины length и возвращает новую, увеличенную длину массива.&lt;br /&gt;
&lt;br /&gt;
 Пример: добавление двух элементов&lt;br /&gt;
 // array.length = 2&lt;br /&gt;
 var array = [ &amp;quot;one&amp;quot;, &amp;quot;two&amp;quot; ] &lt;br /&gt;
 // добавить элементы &amp;quot;three&amp;quot;, &amp;quot;four&amp;quot;&lt;br /&gt;
 var pushed = array.push(&amp;quot;three&amp;quot;, &amp;quot;four&amp;quot;)&lt;br /&gt;
 // теперь array = [ &amp;quot;one&amp;quot;, &amp;quot;two&amp;quot;, &amp;quot;three&amp;quot;, &amp;quot;four&amp;quot; ]&lt;br /&gt;
 // array.length = 4&lt;br /&gt;
 // pushed = 4&lt;br /&gt;
===pop===&lt;br /&gt;
'''arrayObj.pop()'''&lt;br /&gt;
&lt;br /&gt;
Этот метод извлекает последний элемент массива и возвращает его. При этом возвращенный элемент удаляется из массива, а длина массива уменьшается на единицу. Если массив пустой, то метод pop() возвращает значение undefined, при этом массив так и остается пустым.&lt;br /&gt;
&lt;br /&gt;
Этот метод изменяет исходный массив.&lt;br /&gt;
&lt;br /&gt;
 myFish = [&amp;quot;angel&amp;quot;, &amp;quot;clown&amp;quot;, &amp;quot;mandarin&amp;quot;, &amp;quot;surgeon&amp;quot;];&lt;br /&gt;
 popped = myFish.pop();&lt;br /&gt;
 // теперь popped = &amp;quot;surgeon&amp;quot;&lt;br /&gt;
 // myFish = [&amp;quot;angel&amp;quot;, &amp;quot;clown&amp;quot;, &amp;quot;mandarin&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===shift===&lt;br /&gt;
&lt;br /&gt;
'''var elem = arrayObj.shift()'''&lt;br /&gt;
&lt;br /&gt;
Удаляет элемент с индексом 0 и сдвигает остальные элементы на один вниз. Возвращает удаленный элемент&lt;br /&gt;
&lt;br /&gt;
 var arr = [&amp;quot;мой&amp;quot;,&amp;quot;маленький&amp;quot;, &amp;quot;массив&amp;quot;]&lt;br /&gt;
 var my = arr.shift() // =&amp;gt; &amp;quot;мой&amp;quot;&lt;br /&gt;
 alert(arr[0]) // =&amp;gt; &amp;quot;маленький&amp;quot;&lt;br /&gt;
 // теперь arr = [&amp;quot;маленький&amp;quot;, &amp;quot;массив&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===unshift===&lt;br /&gt;
&lt;br /&gt;
'''arrayObj.unshift( [elem1[, elem2[, ...[, elemN]]]] )'''&lt;br /&gt;
&lt;br /&gt;
Аргументы&lt;br /&gt;
&lt;br /&gt;
elem1, elem2, ..., elemN&lt;br /&gt;
&lt;br /&gt;
Добавляет в начало массива элементы и возвращает получившуюся длину.Добавленные элементы сохранят порядок следования. Данный метод изменяет исходный массив.&lt;br /&gt;
&lt;br /&gt;
 var arr = [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;]&lt;br /&gt;
 unshifted = arr.unshift(-2, -1);&lt;br /&gt;
 alert(arr ); // [ -2, -1, &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;]&lt;br /&gt;
 alert(&amp;quot;New length: &amp;quot; + unshifted); // 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==if then else==&lt;br /&gt;
Оператор || возвращает свой второй аргумент, если первый оказался «ложным» (false, null, &amp;quot;&amp;quot;, 0), и первый — в противном случае. Оператор &amp;amp;&amp;amp; возвращает свой второй аргумент, если первый оказался истинным, и первый — если ложным.&lt;br /&gt;
&lt;br /&gt;
if then else&lt;br /&gt;
&lt;br /&gt;
 if ( c ) F(x) else G(x)&lt;br /&gt;
 Это тернарный оператор и всегда содержит три операнда&lt;br /&gt;
 c ? F(x) : G(x)&lt;br /&gt;
 c &amp;amp;&amp;amp; F(x) || G(x)&lt;br /&gt;
&lt;br /&gt;
if then&lt;br /&gt;
 if ( c ) F(x)&lt;br /&gt;
 c &amp;amp;&amp;amp; F(x)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
JavaScript - ленивый язык, поэтому если в конструкции&lt;br /&gt;
&lt;br /&gt;
x &amp;amp;&amp;amp; y&lt;br /&gt;
&lt;br /&gt;
выражение x == false, то выражение y не вычисляется.&lt;br /&gt;
&lt;br /&gt;
==Крайне полезная информация==&lt;br /&gt;
Это надо обработать (всякие трюки)&lt;br /&gt;
&lt;br /&gt;
'''[http://bonsaiden.github.com/JavaScript-Garden/ru/ JavaScript Гарден]'''&lt;br /&gt;
&lt;br /&gt;
[http://habrahabr.ru/post/117069/ Модульный подход в JavaScript]&lt;br /&gt;
&lt;br /&gt;
[http://canegor.urc.ac.ru/gui_for_script/articles/random_sort.htm Случайное перемешивание массива]&lt;br /&gt;
&lt;br /&gt;
[http://habrahabr.ru/post/131714/ Javascript наследование для чайников]&lt;br /&gt;
&lt;br /&gt;
[http://javascript.ru/basic/operators Операторы, их особенности в JS]&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/js/js_comparisons.asp JavaScript Comparison and Logical Operators]&lt;br /&gt;
&lt;br /&gt;
'''[http://habrahabr.ru/post/138773/  Путь асинхронного самурая]'''&lt;br /&gt;
&lt;br /&gt;
[http://habrahabr.ru/post/137818/ «Лапша» из callback-ов — будьте проще]&lt;br /&gt;
&lt;br /&gt;
[http://habrahabr.ru/post/97042/ Как избавиться от пристрастия к синхронности]&lt;br /&gt;
&lt;br /&gt;
[http://habrahabr.ru/post/137778/ Спагетти в последовательном вызове асинхронных функций. Теория и практика]&lt;br /&gt;
&lt;br /&gt;
'''[http://hashcode.ru/questions/87809/javascript-xmlhttprequest-%D0%B2-%D1%86%D0%B8%D0%BA%D0%BB%D0%B5 javascript - XMLHttpRequest в цикле]''' [[javascript - XMLHttpRequest подробный анализ примера]]&lt;br /&gt;
&lt;br /&gt;
[http://javascript.ru/blog/tenshi/mnogopotochnyi-yavaskript Многопоточный яваскрипт]&lt;br /&gt;
-----&lt;br /&gt;
[http://vov4ik-gaevoy.blogspot.com/2010/12/javascript-noprototype-vs-prototype.html Сравнение скорости создания JavaScript объекта NoPrototype vs Prototype]&lt;br /&gt;
&lt;br /&gt;
[http://javascript.ru/optimize/javascript-performance Оптимизация Javascript-кода]&lt;br /&gt;
&lt;br /&gt;
[http://webo.in/articles/habrahabr/23-high-performance-ajax-applications/ Высокопроизводительные AJAX-приложения]&lt;br /&gt;
&lt;br /&gt;
[http://htmlweb.ru/java/optimizaciya.php Оптимизация javascript скриптов]&lt;br /&gt;
&lt;br /&gt;
[http://korzh.net/2011-03-mnozhestvennye-funkcii-v-javascript.html Множественные функции в JavaScript]&lt;br /&gt;
&lt;br /&gt;
[http://korzh.net/2010-10-tipy-dannyx-v-javascript-osobennosti.html Типы данных в Javascript (особенности)]&lt;br /&gt;
&lt;br /&gt;
[http://korzh.net/2009-10-funkcii-v-javascript-ssylki-i-vyzovy.html Функции в Javascript: ссылки и вызовы]&lt;br /&gt;
&lt;br /&gt;
[http://hashcode.ru/questions/96218/javascript-%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-js-%D0%BA%D0%BE%D0%B4%D0%B0 javascript - Оптимизация js кода]&lt;br /&gt;
&lt;br /&gt;
[http://sunjs.blogspot.com/ Всё о JavaScript, оптимизация JavaScript, повышение эффективности кода.]&lt;br /&gt;
&lt;br /&gt;
[http://www.xiper.net/learn/javascript/refactoring/loop-optimization-1.html Оптимизация циклов в Javascript :: часть 1]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/present/view?id=0Ac0YlG9vMA2LZHE1MnpycF8yMGZ6ZnZxa2hy&amp;amp;pli=1]&lt;br /&gt;
&lt;br /&gt;
[http://habrahabr.ru/post/48542/ Работа с объектами в JavaScript: теория и практика]&lt;br /&gt;
&lt;br /&gt;
[http://habrahabr.ru/post/138071/ Разработка WEB-проекта на Node.JS: Часть 1]&lt;br /&gt;
&lt;br /&gt;
[http://habrahabr.ru/post/138629/ Разработка WEB-проекта на Node.JS: Часть 2]&lt;br /&gt;
&lt;br /&gt;
[http://habrahabr.ru/post/17613/ JavaScript. Создание объектов]&lt;br /&gt;
&lt;br /&gt;
[http://habrahabr.ru/post/119391/ Создание объектов в Javascript]&lt;br /&gt;
&lt;br /&gt;
[http://habrahabr.ru/post/48542/ Работа с объектами в JavaScript: теория и практика]&lt;br /&gt;
-----&lt;br /&gt;
[http://nodejs.ru/237 Node.js: использование Event Loop в качестве обычного цикла]&lt;br /&gt;
&lt;br /&gt;
[http://nodejs.ru/149 Асинхронное программирование в Node.js: Ожидание нескольких событий сразу]&lt;br /&gt;
&lt;br /&gt;
'''[http://habrahabr.ru/post/116581/ Ожидание нескольких событий в nodejs]'''&lt;br /&gt;
&lt;br /&gt;
[http://habrahabr.ru/post/108575/ Асинхронная синхронность. JSDeferred]&lt;br /&gt;
&lt;br /&gt;
'''[http://kuroikaze85.wordpress.com/2010/05/05/nodejs-work-queue-server/ Сервер очередей для Node.js]'''&lt;br /&gt;
&lt;br /&gt;
'''[http://gogoo.ru/blacksmith/blog/show/5 Зачем нам memcached на nodejs? Мы и сами с «усами»]'''&lt;br /&gt;
&lt;br /&gt;
'''[http://www.dizballanze.com/?p=825 Очередь сообщений на node.js и memcacheq]'''&lt;br /&gt;
&lt;br /&gt;
'''[http://gogoo.ru/blacksmith/blog/show/klaster_na_osnove_nodejs Кластер на основе NodeJS]'''&lt;br /&gt;
&lt;br /&gt;
'''[http://xpoint.ru/know-how/JavaScript/PoleznyieFunktsii http://xpoint.ru/know-how/JavaScript/PoleznyieFunktsii]'''&lt;br /&gt;
&lt;br /&gt;
[]&lt;br /&gt;
-----&lt;br /&gt;
-----&lt;br /&gt;
[http://habrahabr.ru/post/125782/ Базовые Namespace паттерны JavaScript] [[Базовые Namespace паттерны JavaScript|Копия в support]]&lt;br /&gt;
-----&lt;br /&gt;
-----&lt;br /&gt;
[]&lt;br /&gt;
&lt;br /&gt;
[]&lt;br /&gt;
&lt;br /&gt;
[]&lt;br /&gt;
&lt;br /&gt;
[]&lt;br /&gt;
&lt;br /&gt;
[]&lt;br /&gt;
&lt;br /&gt;
[]&lt;br /&gt;
&lt;br /&gt;
[]&lt;br /&gt;
&lt;br /&gt;
[]&lt;br /&gt;
&lt;br /&gt;
[]&lt;br /&gt;
&lt;br /&gt;
[]&lt;br /&gt;
&lt;br /&gt;
[]&lt;br /&gt;
&lt;br /&gt;
[]&lt;br /&gt;
&lt;br /&gt;
[]&lt;br /&gt;
&lt;br /&gt;
==Полезные трюки==&lt;br /&gt;
http://habrahabr.ru/post/155093/&lt;/div&gt;</summary>
		<author><name>imported&gt;Vix</name></author>
	</entry>
</feed>