Javascript

Материал из Lurkmore.

(Перенаправлено с JavaScript)
Перейти к: навигация, поиск

Содержание

[править] Javascript

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

Благодаря Javascript появилась возможность проведения XSS-атак создавать интерактивные веб-страницы.

Javascript не имеет никакого отношения к языку Java.

[править] Особенности языка

Является языком с мерзкой прототипной объектной моделью. В Javascript используется делегирование, что дает возможность в ходе выполнения программы полностью поменять поведение клонированных от прототипа объектов добавить, например, новые методы для клонированных объектов.

Javascript — язык, где даже функции являются объектами пруф

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

Дмитрий Котеров

Javascript поддерживает замыкания, что дает утечку памяти[1][2] возможность плодить функции, которые будут работать с разными переменами, которые эти функции будут видеть как глобальные (пример ниже).

[править] Примеры кода

<script>
//создаём класс, который является функцией
function Obj () {
this.id = 5;
return this;
}
Obj.prototype.id_pr = 3;
var obj = new Obj();
var obj2 = new Obj();
obj.id = 3;
Obj.prototype.id_pr = 4;
alert('obj.id = ' + obj.id + '\nobj2.id = ' + obj2.id + '\nobj.id_pr = ' + obj.id_pr + '\nobj2.id_pr = ' + obj2.id_pr);
</script>

На что браузер скажет:

„obj.id = 3
obj2.id = 5
obj.id_pr = 4
obj2.id_pr = 4“


Через прототипы можно добавить новую функцию или метод к уже существующим классам[1]

Array.prototype.newFunc = function () { 
return this.join(':');
}

Тем самым мы убили возможность использовать цикл for in, добавили к каждому массиву функцию newFunc, возвращающую строчку, состоящую из списка элементов, разделённых двоеточиями.

//Замыкания
function test(i) {
var i = i;
return function () {
return i * i;
}
}
 
var a = test(2);
var b = test(3);
alert('a() = ' + a() + '\nb() = ' + b());
 
//Спасаемся от утечек памяти, смотри [1] и [2]
onunload = function () {
a = null;
b = null;
}

На что браузер скажет:

„a() = 4
b() = 9“


[править] Разное

Таблица сравнений Javascript
Таблица сравнений Javascript

В Javascript есть значения true, false, null, undefined, Nan, Infinity, что очень удобно ведь приходится смотреть в таблицу сравнений (рисунок справа).

Сценарии на javascript можно запускать, набрав в адресной строке браузера javascript:<некий код> (наверное поэтому, некоторые считают javascript протоколом :-)[2]), это даёт возможность украсть куки, проверить значения некоторых глобальных переменных и вызвать определенные функции (хотя для этих целей удобно использовать плагин "Execute JS" для Firefox`а)

[править] Примечания

  1. Вообще-то в javascript классов нет, есть только объекты, например глобальный объект Array, но для простоты я буду называть эти глобальные объекты классами
  2. http://forum.antichat.ru/thread13949.html
Источник — «http://lurkmore.ru/Javascript»
Личные инструменты
Инструменты