Что стоит знать о javascript

В данной статье я решил собрать все понятия о javascript, которые могут вызывать сложности:

Итак:

Javascript – объектный язык

В нем все является объектами. Строки, числа, функции и массивы – все это объекты со своими методами и свойствами.

name = "Stroka"
alert( name.toString() ); //Stroka

 

Javascript – прототипизированный язык

Т.е. наследование происходит путем копирования экземпляра объекта – прототипа. И если мы в прототип добавим новый метод,  после инициализации дочернего класса. В дочернем классе метод будет доступен.

function Fruit(name) { }
var fruit = new Fruit(); //Создаем новый объект

function Apple(name) { }
Apple.prototype = fruit; //Создаем класс Apple наследуемый от прототипа fruit

big = new Apple();
//big.count(3); //TypeError: big.count is not a function - 
//т.е. функция count недоступна

// Добавляем в всем объектам класса Fruit метод count
Fruit.prototype.count= function(n) {
    alert(n);
}

big.count(3); //3 - т.е. метод count доступен и из объектов класса Apple

 

Слабая типизация, динимическая типизация

Переменные в javascript слабо типизированы – т.е. не нужно явно объявлять тип переменной.  Уже браузер в зависимости от типа позволит или не позволит выполнять какие-либо операции.  По мере выполнения программы тип переменной может меняться (динамическая типизация).

    var res = "string1";  alert(res);  // выводит «string1»
      res = 1;          alert(res);  // выводит «1»
      res += 2;         alert(res);  // выводит «3»
      res += 'string2'; alert(res);  // выводит «3string2»

 

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

Переменные в Javascript бывают глобальными и локальными (с использование директивы var).  Глобальная переменная доступна везде, локальная — только в текущей области видимости.

Технически, глобальные переменные — всего лишь свойства объекта window, поскольку весь код выполняется в его контексте.

<script>
alert(location); // сообщит window.location
</script>

В JavaScript область видимости переменных не ограничивается блоком {}, а ограничивается только функцией.
Это можно видеть на примере:

a = 'global'; //глобальная переменная
function go() {
    var a = 'local'; //локальная переменная
}
go();
alert(a); // global - т.е. отобразится глобальная переменная

a = 'global';
for (var i=0;i<=1;i++) {
    var a = 'local';
}
alert(a); // local - т.е. отобразится локальная переменная

 

Функции в JS

Функции js являются полноценными объектами класса Function. Поэтому возможны такие конструкции:

function myfunc() { ... }
myfunc.test = 6
alert(myfunc.test) // 6

В Js существует возможность объявлять анонимные функции. Т.е. функции, которые объявляются на месте использования и не имеют отдельного названия. До момента объявления они недоступны.
Пример:

function(x,y) {return x+y}

 

Замыкания

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

function addObrabotchil(sourceId) {
	var na-chto-povesit = document.getElementById(sourceId)
	var obrabotchik = function() {
		alert('Клик обработан');
	}
	na-chto-povesit.onclick = obrabotchik
}

 

DOM

DOM (объектная модель документа) - объектное представление страницы документа написанной на html, xhtml, xml, которое позволяет работать со структурой (читать, изменять, удалять) документа.

 

Как отлаживать JS

  • в Mozilla Firefox - firebug
  • в Opera - Opera Dragonfly
  • в Internet Explorer - Microsoft Script Debugger

 

Фреймворки, сборники классов JS

  • jQuery
  • Prototype
  • Dojo
  • Ext (фреймворк)
  • Yahoo! UI Library
  • MochiKit (англ.)
  • MooTools
  • Rico

 

Сайты

javascript.ru

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *