ClientSide

Изучаем JavaScript, ч. 4: Объекты: Объектно-Ориентированный JavaScript

мая 18, 2011  |  Published in ClientSide, JavaScript

javascriptJavaScript — объектно-ориентированный язык программирования в котором почти все является объектами. Основным отличием «объектно-ориентированности» JavaScript от, например, Ruby является то, что JavaScript является class-free языком программирования, то есть в JavaScript отсутствует концепция классов. Если в Ruby объект является экземпляром класса, то в JavaScript объект является просто объектом, а передача свойств происходит через прототипы и функции — конструкторы.

Давайте для начала разберемся с тем, что такое объект в JavaScript. Объект — это просто коллекция свойств. Если свойство объекта ссылается на функцию, то оно называется методом. Простой пример:

myObj = new Object();
myObj.property = "Value.";
myObj['second_property'] = 12;
myObj.third_property = function () { alert(this.property); };

alert(myObj.second_property); //12
alert(myObj.property); //Value.
myObj.third_property(); //Value.

Read the rest of this entry »

Tags:

Изучаем JavaScript, ч. 3: Функции: Тонкие моменты при работе с функциями в JavaScript

мая 18, 2011  |  Published in ClientSide, JavaScript

Ранее, в первой части, говорилось о том, что разницы между следующими типами создания функций нету:

function funcName(){};

funcName = function(){};

funcName = new Function();

На самом деле отличия есть, они достаточно незаметны, но знать их необходимо.

function funcName(){} — декларация (объявление) функции;

funcName = function(){} — присвоение переменной выражения — функции;

funcName = new Function(); — конструирование функции.
Read the rest of this entry »

Tags: ,

Изучаем JavaScript, ч. 2: Функции: Подбираемся ближе к функциям JavaScript

мая 16, 2011  |  Published in ClientSide, JavaScript

В прошлой части мы познакомились с функциями в JavaScript, а в этой мы рассмотрим их более подробно опираясь на уже имеющиеся из прошой части RubyDev JavaScript учебника.

Область видимости и контекст выполнения

Для начала поговорим об области видимости переменных в JavaScript. Обычно работу с перемеными описывают в первую очередь и отдельно от функций, однако в нашем случае такой порядок более уместен, поскольку функция — это объект, то есть значение, которое может быть присвоено переменной и доступ к которому может быть произведен через переменную (имя функции и есть переменная). Кроме того, при работе с переменными имеется множество подводных камней, которые составляют проблемы для изучения JavaScript.

Функции — это особые объекты, которые кроме пар свойство — значение могут содержать еще и выполняемый код. Как и любой объект, функция отгораживается от внешнего мира, создает свой собственный маленький мирок, который называется областью видимости или пространством. Переменные объявленные в теле функции являются локальными, то есть они замкнуты в функции, в ее мальньком мирке. При этом областью видимости таких переменных является тело функции, обратиться к ним из вне невозможно! Пример функции с внутренними переменными:

function helloFunction(){
  var hello = "Hello!";
  alert(hello);
}

helloFunction();//Hello!

alert(hello);//Переменной hello в текущем пространстве вызова alert не существует!

Read the rest of this entry »

Tags: ,

Изучаем JavaScript, ч. 1: Функции: Основы работы с функциями в JavaScript

мая 11, 2011  |  Published in ClientSide, JavaScript, Новости

RubyDev учебник по клиентскому JavaScript

Почему именно по клиентскому? — Во-первых меня, по крайней мере пока, не интересует серверный javascript и не интересует node.js и т.п. Во-вторых, клиентский яваскрипт все-таки более популярен и конкретно он меня наибольшим образом интересует. В любом случае, если меня заинтересует серверный JavaScript и работа с Node.js, то будет выпущен соответствующий новый, отдельный цикл, уже по самой технологии, а не по самому JavaScript, поскольку отличия не существенны, это по прожнему тот же javaScript, только выполняющий работу иного характера.

Данный учебник не будет описывать работу со строками или массивами и не будет преднамеренно знакомить вас с библиотекой предопределенных «классов» и методов. Все это так потому, что целью данного учебника не является его становление справочником, но предоставление вам понимания того, что такое JavaScript, его концепций и стиля написания программ.

В этом цикле статей будет также расмотрен фреймворк jQuery, который позволяет разработчику сконцентрироваться на написании логики не отвлекаясь на кроссбраузерность и так далее. Другими словами jQuery берет на себя весь рутинный труд.

Не смотря на то, что JavaScript является объектно-ориентированным (ОО) языком программирования, для него более родственной является концепция функций.

Любая функция в JavaScript — это экземпляр класса Function. Честно признаться, в JavaScript не того, что принято называть классами. Работу классов в JavaScript выполняют функции — конструкторы (или просто конструкторы), которые создают объекты с определенными предопределенными свойствами. Ниже приведен пример использования конструктора для создания объекта типа Array:

myArray = new Array(1,2,3,4,5); //1,2,3,4,5
myArray; //1,2,3,4,5
typeof myArray; //object
myArray.constructor; //возвращает конструктор Array

Пояснения:
1. Для создания новых объектов конструкторы вызываются через выражение new. Так же как и классы, функции конструкторы могут свои собственные свойства.
2. Оператор typeof используется для получения типа объекта. К сожалению он годится только для предопределенных типов: строки, числа, булевы значения. Все остальные объекты, например массивы и пользовательские объекты будут иметь тип object, что не о чем не говорит.
3. Метод constructor возвращает функцию-конструктор объекта — приемника.

Обявить функцию можно при помощи двух способов: выражения function и конструктора Function, ниже приведены примеры обоих:

function myFunction(){
alert("Hello!");
}

myFunction(); //Hello

var myFunction = new Function("alert(\"Bye-bye!\");");

myFunction(); //Bye-bye!

Пояснения:
1. Как видите, имя функции — это всего-лишь переменная, которая ссылается на объект функции в памяти компьютера.
2. Создание функций с использованием конструкторов — это моветон, посколько данный метод сильно сничает читабельность и использует eval для преобразования строки в код.
Read the rest of this entry »

Tags:

HTML5 притив Silverlight: Sencha — первый HTML5 фреймворк для мобильных приложений.

октября 19, 2010  |  Published in ClientSide

Оригинал статьи на английском языке был опубликован в блоге интернет агентства . Основным направлением деятельности компании является разработка интернет и мобильных приложений на платформах Ruby on Rails и .NET с использованием последних новшеств стандарта HTML 5

Это первый пост из серии о будущем MS Silverlight в мире сходящем с ума от HTML5. Это не хвалебный пост в сторону HTML5 и мы не являемся фанатиками данной технологии. В этой серии мы будем освещать события происходящие в веб индустрии, которые предоставляют доводы за и против использование обеих технологий: Microsoft Silverlight и HTML5.

Совсем недавно мы узнали, что один из наших любимых JavaScript фреймворков сменил домен на . Кроме того, большим сюрпризом оказалось создание ребятами из команды ExtJS «Первого HTML5 — фреймворка для мобильных приложений», который поддерживает Apple iOS и Google Android девайсы с тачскрином.

sencha

Read the rest of this entry »

Tags: ,