| HTML5 [1] |
| CSS3 [1] |
| JavaScript [3] |
| JS in HTML5 [4] |
| Canvas (Context2D) [1] |
| Canvas (WebGL) [0] |
| Browser Technologies [2] |
| jQuery [1] |
| ExtJS [0] |
| Prototype.js [2] |
| SVG [2] |
| Browsers [2] |
|
Mozilla Plugins [0]
XUL, Jetpack, etc.
|
| Web [2] |
| MeowW [4] |
| iOS [0] |
| Алгоритмы [0] |
| Криптография [0] |
| Теория игр [0] |
| Теория вероятностей [0] |
| Математика [1] |
| Мат. анализ [0] |
| Алгебра [0] |
| Дискретная математика [0] |
| Теория графов [0] |
| Комбинаторика [0] |
| Теория чисел [0] |
| Комплексный анализ [0] |
|
Матлогика [0]
Математическая логика, её связь с теорией алгоритмов и т.п.
|
| Тензоры [0] |
| Геометрия [0] |
| Топология [0] |
| Дифференциальная геометрия [0] |
| Дифференциальные уравнения [0] |
19:51:00 Основы prototype |
What is prototype.js?Prototype.js - это кроссбраузерная JavaScript-библиотека, которая может облегчить работу с Web страницей. К слову говоря, она используется в серверном фреймворке Ruby on Rails, на котором, к слову говоря, написан Twitter. Давайте сразу скажу, почему я упорно называю её Prototype.js, а не просто Prototype. Дело в том, что в JS есть одноимённый объект - prototype. И есть он у всех объектов и вообще у всего кроме null и undefined, которые объектами не являются. ![]() Основные функции prototypePrototype имеет несколько основных функций. Это самые основы Prototype и их хорошо надо знать. $Как-то нравится всем разработчикам JS-фреймворков функция доллара ($). jQuery её предоставляет для получения элемента по селектору. Prototype, как и Mootools, работает совершенно по другому. $ в ней является всего лишь сокращением функции document.getElementById. К слову сказать: элемент по этой функции возвращается уже расширенный с помощью Prototype. Внимание! Для использования jQuery совместно с Prototype, необходимо применить функцию jQuery.noConflict(). В таком случае jQ освободит функцию доллара $ для Prototype, а сам останется доступен по функции jQuery. Правда это может уменьшить совместимость с плагинами; а функцию $ во всех jQ-скриптах придётся заменить на функцию jQuery. Code alert( $('mydiv') ); // [object HTMLDivElement] Ещё такой момент. Можно передать сразу несколько параметров. Тогда будет возвращено несколько элементов. Code alert( $('mydiv', 'mydiv2', 'mydiv3') ); // [object HTMLDivElement],[object HTMLDivElement],[object HTMLDivElement] Разумеется, все переданные элементы будут расширены. Тут есть ещё интересный момент. Можно передать элемент напрямую - тогда он тоже вернётся и будет расширен. Code alert( $('mydiv', document.getElementById('mydiv2'), 'mydiv3') ); // [object HTMLDivElement],[object HTMLDivElement],[object HTMLDivElement] $$А вот эта функция уже, как и в Mootools, возвращает элемент по CSS-селектору. Разумеется, можно также передать и несколько параметров. А вот элемент уже передать нельзя. Code $$('#mydiv'); // [object HTMLDivElement] $$('div'); // [object HTMLDivElement],[object HTMLDivElement],[object HTMLDivElement] $$('#mydiv', '#mydiv2'); // [object HTMLDivElement],[object HTMLDivElement] $AФункция $A получает на вход один объект, похожий на массив, а возвращает настоящий массив. Представляет собой псевдоним для функции Array.from. Вот вам пример: Code document.getElementsByTagName('div'); // [object HTMLCollection] $A(document.getElementsByTagName('div')); // [object HTMLDivElement],[object HTMLDivElement],[object HTMLDivElement] $FФункция $F является псевдонимом для функции Form.Element.getValue. Передаём ей id формы, и в ответ возвращается значение формы (value), либо значение свойства checked (для checkbox, radiobox и т.д.). Code $F('mytext'); // эквивалентно $('mytext').value $HПреображает переданный объект в объект класса Hash. Это специальный объект, предоставляемый Prototype. В общем, мы его позже будем изучать, пока не заморачивайтесь. Но всё-таки пример: Code var abc=$H({ a:1, b:2 }); abc.get('a'); // 1 abc.set('b', '123'); abc.get('b'); // 123 $RСоздаёт новый объект класса ObjectRange. Является псевдонимом конструктора ObjectRange. Короче так: Code var rng=$R(1, 5); rng=$A(rng); // преобразуем в массив rng; // [1, 2, 3, 4, 5] rng=$R('a', 'd'); rng=$A(rng); rng; // ['a', 'b', 'c', 'd'] $wРазбивает строку на массив, разделитель - пробелы. Code var str='abc dce efg'; $w(str); // ['abc', 'dce', 'efg'] document.getElementsByClassNameПодобно функциям html5, ищет элементы с указанным классом. При этом можно вторым параметром передать элемент, внутри которого искать. Вот оно - эти проблемы с несовместимостью. Допустим, браузер поддерживает document.getElementsByClassName. Что будет? Ошибка? Prototype перекроет стандартную функцию браузера? Скорее всего, да. А самое интересное, что в Prototype эта функция появилась задолго до появления в браузерах. Try.theseФункция Try.these является аналогом конструкции try...catch. Вот пример: Code Try.these(function(){ alert(0); juik; // кидаем ошибку return 0; }, function(){ alert(1); return 1; }) Как думаете, что вернётся? Вначале выполнится первая функция, алертнет 0, затем возникнет ошибка от неизвестной переменной и выполнится вторая функция. Здесь ошибок не возникнет, функция мирно алертнет 1. И вся эта конструкция вернёт 1 - то что вернула вторая функция. Под конецЕщё немножко инфы про Prototype. Автор: |
|
|
| Всего комментариев: 2 | |
|
| |



