JavaScript
| Эта статья состоит из уныния и отчаяния. Сделайте с ней что-нибудь. Пожалуйста. |
Содержание |
Javascript
Javascript — жопный скриптовый язык, чаще всего использующийся при создании сценариев поведения браузера, встраиваемых в веб-страницы. Является одной из реализаций языка ECMAScript.
Благодаря Javascript появилась возможность проведения XSS-атак создавать интерактивные веб-страницы.
Javascript не имеет никакого отношения к языку Java. Javascript имеет к Java такое же отношение, как морская свинка к свинье!
Особенности языка
Является языком с мерзкой прототипной объектной моделью.[1] В Javascript используется делегирование, что дает возможность в ходе выполнения программы полностью поменять поведение клонированных от прототипа объектов добавить, например, новые методы для клонированных объектов.
Javascript — язык, где даже функции являются объектами пруф, даже объекты являются функциями
|
В общем, JavaScript — это такой дзенский язык программирования, в котором все — объекты, и нет никакой разницы между хэшем и объектом, между объектом и классом, между свойством и методом, между методом и обычной функцией... |
| Дмитрий Котеров |
Javascript поддерживает замыкания, что дает утечку памяти[2][3] возможность плодить функции, которые будут работать с разными переменными, которые эти функции будут видеть как глобальные (пример ниже).
В Javascript 0.1 + 0.2 == 0.30000000000000004, так-то.
Примеры кода
<script>
//создаём класс, который является функцией
function Obj () {
this.id = 5;
}
Obj.prototype.id_pr = 3;
var obj1 = new Obj();
var obj2 = new Obj();
obj1.id = 3;
Obj.prototype.id_pr = 4;
alert( ['obj1.id=', obj1.id,
'\nobj2.id=', obj2.id,
'\nobj1.id_pr=', obj1.id_pr,
'\nobj2.id_pr=', obj2.id_pr].join('') );
</script>На что браузер скажет:
| « |
obj1.id = 3 | » |
| — Косая Горящая Лиса | ||
Через прототипы можно добавить новую функцию или метод к уже существующим классам[2]
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 | » |
| — Лучший в мире | ||
Разное
В Javascript есть значения true, false, null, undefined, Nan, Infinity, что очень удобно ведь приходится смотреть в таблицу сравнений (рисунок справа).
Сценарии на javascript можно запускать, набрав в адресной строке браузера javascript:<некий код> (наверное поэтому, некоторые считают javascript протоколом :-)[3]), это даёт возможность украсть куки, проверить значения некоторых глобальных переменных и вызвать определенные функции (хотя для этих целей удобно использовать плагин "Execute JS" для Firefox`а), а также использовать в коде web-страницы ссылки типа
<a href="javascript: alert( 'НЕ ДОВИ НА МЕНЯ!' );">ссылка</a>
вместо ущербных
<a href="#" onclick="alert( 'НЕ ДОВИ НА МЕНЯ!' );">ссылка</a>
Примечания
- ↑ Однако в 2.0 версии обещают нам, что будет всё в ажуре[1]
- ↑ Вообще-то в javascript классов нет, есть только объекты, например глобальный объект Array, но для простоты я буду называть эти глобальные объекты классами
- ↑ http://forum.antichat.ru/thread13949.html
|
[ + ] Любой программист без словаря поймёт, что такое JavaScript
|
||||||||
|---|---|---|---|---|---|---|---|---|---|
|
|||||||||
