Об"єктна модель мови JavaScript
Події.
Об'єктну модель можна представити як спосіб зв’язку між сторінками і браузером. Об'єктна модель — це представлення об'єктів, методів, властивостей і подій, які присутні і відбуваються в програмному забезпеченні браузера, у вигляді, зручному для роботи з ними коди HTML і початкового тексту сценарію на сторінці. З її допомогою можна повідомляти необхідні побажання браузеру і далі… Читати ще >
Об"єктна модель мови JavaScript (реферат, курсова, диплом, контрольна)
Вступ
Мова програмування JavaScript була розроблена Бренданом Ейком (Brendan Eich) в Netscape Communications як мова сценаріїв для оглядачів Netscape Navigator, починаючи з версії 2.0. В подальшому до розвитку цієї мови підключилася корпорація Microsoft, чиї Веб-оглядачі Internet Explorer підтримують JavaScript, починаючи з версії 3.0. Версія Microsoft отримала назву JScipt, оскільки JavaScript є зареєстрованою маркою фірми Netscape. У 1996 р. ECMA прийняла рішення про стандартизацію цієї мови, і в червні 1997 р. була прийнята перша версія стандарту під назвою ECMAScript (ECMA-262). У квітні 1998 р. цей стандарт був прийнятий ISO в якості міжнародного під номером ISO / IEC 16 262. Робота грунтується на третій версії стандарту ECMA (грудень 1999 р.), але використовується назва JavaScript, а не ECMAScript з двох причин:
1. Ця назва є історично першою, і під нею дана мова найбільш відома широкому колу користувачів.
2. Відповідний тип MIME, а саме «text / javascript», розпізнається усіма оглядачами, які підтримують сценарії цією мовою, на відміну від JScript або ECMAScript. JavaScript — це об'єктно-орієнтована мова програмування, призначена для написання сценаріїв, що працюють як на стороні клієнта, так і на стороні сервера. Тому вона не є «повноцінною» мовою програмування, а орієнтована на використання можливостей того середовища, в якому сценарії виконуються. Браузер, який працює на комп’ютері-клієнті, забезпечує середовище, в якому JavaScript має доступ до об'єктів, які являють собою вікна, меню, діалоги, текстові області, фрейми, куки і введення-виведення в Веб-сторінку. Крім того, оглядач дозволяє приєднати сценарії на мові JavaScript до таких подій, як завантаження та вивантаження сторінок і графічних образів, натиснення клавіш і рух миші, вибір тексту і пересилання форм. При цьому програмний код сценаріїв тільки реагує на події і тому не має потреби в головній програмі. Набір об'єктів, що надаються оглядачем, відомий під назвою Document Object Model (DOM). Веб-сервер забезпечує інше середовище, в якому об'єктами є запити до баз даних, клієнти, файли і механізми блокування та обміну даними. Спільне використання сценаріїв і на стороні клієнта, і на стороні сервера дозволяє розподілити обчислення між ними і забезпечити бажаний для користувача інтерфейс для Веб-додатків.
Тема даного дослідження є досить актуальною, адже при розробці сучасного сайта не завжди можна обійтись лише можливостями мови розмітки HTML. З метою надання веб-сторінкам привабливого вигляду і створення у відвідувача відчуття взаємодії із сайтом використовують додаткові можливості, доступні при використанні Java-скриптів. Діапазон їх застосування досить широкий: це і елементи інтерактивності, які можуть містити складні процедури обробки, і просто декоративні елементи, які надають привабливості сайту. До того ж використання JAVA-Script дозволяє різноманітити і «пожвавити» представлення інформації.
Отже, метою даного дослідження буде освоєння мови Javascript, виявлення особливостей її об'єктної моделі, можливостей при створенні Web-документів і визначення її недоліків, виправлення яких і визначатиме тенденції подальшого розвитку мови. Об'єктом дослідження буде сама мова Javascript, її синтаксис, вбудовані функції, об'єкти, властивості і методи об'єктів. Предметом дослідження будуть можливості використання функцій, об'єктів, їх властивостей і методів для створення сценаріїв, покликаних забезпечити інтерактивність Web-страниц і розширити можливості надання інформації в Internet.
1. Короткий опис
Javascript — це мова програмування, заснована на об'єктах: і мовні засоби, і можливості середовища представляються об'єктами, а сценарій (програма) на Javascript — це набір взаємодіючих об'єктів. Об'єкт Javascript — це неврегульований набір властивостей, кожна з яких має нуль або більше атрибутів, які визначають, як ця властивість може використовуватися. Javascript містить декілька вбудованих об'єктів, таких, як Global, Object, Error Function, Array, String, Boolean, Number, Math, Date, Regexp. Крім того, Javascript містить набір вбудованих операцій, які, строго кажучи, не обов’язково є функціями або методами, а також набір вбудованих операторів, керівників логікою виконання програм. Синтаксис Javascript в основному відповідає синтаксису мови Java, але спрощений порівняно з ним, щоб зробити мову сценаріїв легкою для вивчення. Так, наприклад, декларація змінної не містить її типу, властивості також не мають типів, а декларація функції може стояти в тексті програми після її виклику. Мова Javascript, на відміну від мов Java і C++, не містить класів об'єктів в строгому сенсі слова. Замість цього вона підтримує конструктори, які створюють об'єкти шляхом виділення для них пам’яті і ініціалізації всіх або деяких їх властивостей. Всі конструктори є об'єктами, але не всі об'єкти є конструкторами. Кожен конструктор має властивість prototype, яке використовується для реалізації спадкоємства заснованого на прототипах, і властивостей, що розділяються. Javascript підтримує спадкоємство, засноване на прототипах. З кожним конструктором зв’язаний відповідний прототип, і кожен об'єкт, створений конструктором, містить неявне посилання на цей прототип (званий прототипом об'єкту). Прототип, в свою черга, може містити посилання на свій прототип і так далі. Так утворюється ланцюжок прототипів. Посилання на властивість об'єкту — це посилання на перший прототип в ланцюжку прототипів об'єкту, який містить властивість з даним ім'ям. Іншими словами, якщо даний об'єкт має властивість з даним ім'ям, то використовується посилання на цю властивість; якщо немає, то досліджується прототип цього об'єкту і так далі У об'єктно-орієнтованих мовах, заснованих на класах об'єктів, поточний стан реалізується екземплярами класів, методи реалізуються класами, а спадкоємство — структурою і поведінкою. У Javascript поточний стан і методи реалізуються об'єктами, а структура і поведінка успадковуються. Всі об'єкти, які явно містять властивість, яка містить їх прототип, розділяють цю властивість і її значення. На відміну від мов заснованих на класах, властивості можуть динамічно додаватися до об'єктів шляхом привласнення ним значень. Зокрема, конструктори не зобов’язані привласнювати значення всім або деяким властивостям створюваного об'єкту. Властивості - це контейнери, які містять інші об'єкти, примітивні значення і методи. Примітивне значення — це елемент будь-якого з вбудованих типів: Undefined, Null, Boolean, Number і String; об'єкт — це елемент ще одного вбудованого типу Object; метод — функція, що асоціюється з об'єктом через властивість.
2. Основи мови
2.1 Структура програм на мові Javascript
Програма (сценарій) на мові Javascript — це текст, що складається з операторів, блоків, тобто взаємозв'язаних наборів операторів, і коментарів. Оператори можуть містити змінні, константи і вирази.
function convert (inches) {
cm = inches * 2.54; // Цих двох операторів поміщено в блок.
meters = inches / 39.37;
} convert (inches); // Ці два оператори не утворюють блоку.
km = meters / 1000;
Кожен оператор Javascript починається з нового рядка (що не обов’язково) і закінчується крапкою з комою (що також не обов’язково, якщо оператор є останнім в рядку).
Блок — це набір операторів, ув’язнений у фігурні дужки {}.
2.2 Коментарі
Коментарі в Javascript можуть бути однорядковими і багаторядковими. Однорядкові коментарі починаються з символів // і продовжуються до кінця поточного рядка, як показано в приведеному вище прикладі. Багаторядкові коментарі полягають в маркери /* і */, наприклад:
/* Коментар
ще коментар */
2.3 Зарезервовані слова
Наступні імена є ключовими словами мови Javascript і не можуть вживатися як ідентифікатори:
break | delete | function | return | Typeof | |
case | do | if | switch | Var | |
catch | else | in | this | Void | |
continue | finally | instanceof | throw | While | |
default | for | new | try | With | |
Наступні імена є ключовими словами в пропонованих розширеннях мови Javascript і також не повинні уживатися як ідентифікатори в цілях сумісності з майбутніми версіями мови:
absract | double | implements | private | throws | |
boolean | enum | import | protected | transient | |
byte | export | int | public | volatile | |
char | extends | interface | short | ||
class | final | long | static | ||
const | float | native | super | ||
debugger | goto | package | synchronized | ||
2.4 Ідентифікатори
Ідентифікатори використовуються в Javascript як імена змінних. Вони можуть починатися з латинської букви, символу «$» (знак долара) або символу «_» (підкреслення) і повинні складатися з латинських букв, цифр і символів «$» і «_». Ідентифікатори не можуть співпадати із зарезервованими словами. Два ідентифікатори вважаються рівними, якщо вони текстуально співпадають; це означає, що Javascript проводить відмінність між рядковими і прописними буквами.
2.5 Декларація змінних
Змінні використовуються як символічні імена, що приймають різні значення. Імена змінних задаються ідентифікаторами. Змінна створюється у момент її декларації. Javascript дозволяє декларувати змінну двома способами:
* За допомогою ключового слова var, наприклад, var x; або var x = 21;.
* Просто присвоєнням змінній значення, наприклад x = 21;.
Якщо декларація змінної не містить присвоєння їй значення, то її значенням вважається undefined. Приклад:
var text;
if (text == undefined)
document.write («Текст не заданий«);
else
document.write («Текст:» + text);
В даному прикладі значення змінної text не визначене, тому буде виконаний перший оператор document.write.
У найзагальнішому вигляді декларація змінних має вигляд:
var ідентифікатор[=ініціалізатор]? [, ідентифікатор[=ініціалізатор]?]?
Приклад:
var, а = 0, b, з = «текст», x, у = false;
2.6 Область дії змінних
Область дії змінної визначається положенням її декларації в тексті програми. Існують три типи виконуваного коду Javascript, що називаються контекстом виконання:
* Глобальний контекст, тобто початковий текст сценаріїв, не включаючи тіла функцій.
* Локальний контекст, тобто початковий текст сценаріїв, що є тілом функції, а також аргумент конструктора вбудованого об'єкту Function. Точніше кажучи, якщо останнім параметром конструктора Function є рядок тексту, то він інтерпретується як тіло функції.
* Eval-контекст, тобто аргумент методу eval. Якщо параметром методу eval є рядок тексту, то він інтерпретується як програма на мові Javascript, що має той же контекст, в якому був викликаний цей метод. Іншими словами, будь-яка змінна, що декларує поза тілом всіх функцій, є глобальною і доступна усюди в тексті даної програми. Змінна, що декларує в тілі функції, є локальною і доступна тільки усередині тіла цієї функції.
Для декларації глобальних змінних ключове слово var не обов’язково. Проте, воно обов’язкове при декларації локальних змінних.
2.7 Константи
Константи використовуються для завдання постійних значень. У Javascript є декілька типів констант, відповідних його вбудованим типам, а саме:
* нульова константа null типу Null;
* логічні константи true (істина) і false (брехня) типу Boolean;
* строкові константи типу String, наприклад, «Привіт всім!»;
* числові константи типу Number, наприклад, 21 або 3.1 415 926.
2.8 Типи даних
Мову Javascript містить шість типів даних: Undefined (невизначений), Null (нульовий), Boolean (логічний), String (строковий), Number (числовий) і Object (об'єктний). Це відносно невелика кількість типів дозволяє, проте, створювати повноцінні сценарії для виконання багатьох функцій.
Тип Undefined (невизначений)
Цей тип складається з єдиного значення undefined. Це значення, яке приймає змінна, яка оголошена в програмі, але якій ще не присвоєно ніяке значення.
Тип Null (нулевий)
Цей тип складається з єдиного значення null. Це значення означає нулеве, порожнє або неіснуюче посилання.
Тип Boolean (логічний)
Цей тип складається рівно з двох логічних значень: true (істина) і false (брехня).
Тип String (строковий)
Цей тип складається зі всіх можливих текстових рядків. Кожен рядок є впорядкованим масивом з нуля або більше символів Unicode (тобто 16-бітових цілих чисел без знаку), що називаються елементами рядка. Елементи рядка нумеруються, починаючи з нуля. Довжина рядка — це кількість елементів в ньому; порожній рядок складається з нуля елементів.
Тип Number (числовий)
Цей тип має рівно 18 437 736 874 454 810 624 (тобто 264 — 253 + 3) значень, відповідних 64-бітовому формату плаваючих чисел подвійної точності IEEE 754 з тим єдиним виключенням, що 9 007 199 254 740 990 (тобто 253 — 2) різних значень «Не число» даного формату представляються в Javascript одним значенням NAN. Ще два спеціальні значення — це додатна нескінченність і від'ємна нескінченність, яким в Javascript відповідають вирази +Infinity (або просто Inifinity) і - infinity. Відзначимо також, що в даному форматі розрізняються додатний нуль (+0 або 0) і від'ємний нуль (-0).
Тип Object (об'єктний)
Значенням цього типу є об'єкти. Об'єкт — це неврегульований набір властивостей.
2.9 Перетворення типів
Javascript — слабо типізована мова. Це означає, що в декларації змінної ми не вказуємо її тип і надалі можемо присвоювати їй значення будь-яких типів. Виконуюча система Javascript сама виконує автоматичне перетворення типів даних в міру необхідності. Для явного перетворення типів використовуються методи Boolean, Number, Object і String.
2.10 Приклади неявних перетворень
У виразах, що сполучають числові і строкові значення операцією +, Javascript перетворить числа в рядки, наприклад:
x = «Відповідь рівна» + 21 // повертає «Відповідь рівний 21»
у = 21 + «- ось відповідь» // повертає «21 — ось відповідь»
У решті випадків Javascript намагається перетворити рядок в число, наприклад:
а = «21» — 1 // повертає 20
b = «21» + 1 // повертає 21
2.11 Вирази і операції
Вирази в Javascript, як і в інших мовах програмування, є комбінації змінних, констант і операцій, що дають осмислений результат. Цей результат може бути числом, текстовим рядком, логічним значенням або об'єктом.
Відповідно всі вирази Javascript підрозділяються на арифметичні, строкові, логічні і об'єктні. Існує два типи виразів: ті, які привласнюють значення деякої змінної (наприклад, x = 2 + 3), і ті, які просто мають якесь значення (наприклад, 2 + 3).
Перший тип виразів називається операціями привласнення. Всі операції в Javascript підрозділяються на наступні:
* операції порівняння;
* арифметичні операції;
* бітові операції;
* логічні операції;
* строкові операції;
* операції присвоювання;
* інші операції.
2.12 Пріоритети операцій
Операція | |
[] () ++ - - ~! delete new typeof void | |
* /% | |
+ ; | |
<< >> >>> | |
< <= > >= instanceof | |
==≠ ===≠= | |
& | |
^ | |
| | |
&& | |
|| | |
?: | |
= += -= *= /=%= <<= >>= >>>= &= ^= |= | |
2.13 Оператори Javascript
Управління послідовністю дій в ході виконання сценарію здійснюється за допомогою операторів. Javascript містить стандартний набір операторів, успадкований від мов C++ і Java, а саме:
* умовний оператор if. else;
* оператор вибору switch;
* оператори циклу for, while, do. while, break і continue;
* оператор ітерації for. in;
* оператор вказівки об'єкту with;
* оператори обробки виключень try. catch і throw;
* оператори декларації функцій function і повернення з функції return.
* порожній оператор;
* оператор декларації змінних var.
Будь-який вираз Javascript також є оператором.
2.14 Декларація функції
Функція в Javascript — це набір операторів, що виконують певне завдання. Декларація функції має вигляд:
function ім'я (аргументи?) {
оператори
}
Приклад:
function cube (number) {
return number * number * number;}
2.15 Виклик функції
Важливо розуміти, що поява декларації функції в тексті сценарію не означає її негайного виконання; тіло функції виконуватиметься тільки тоді, коли який-небудь оператор міститиме виклик цієї функції. Наприклад, функція з попереднього прикладу може бути викликана так:
var x = cube (5);
В результаті змінна x набуде значення 125.
У Javascript діють наступні правила передачі аргументів функції:
* Аргументи примітивних типів передаються функції за значенням. Іншими словами, формальним аргументам присвоюються значення фактичних аргументів на момент виклику і, якщо навіть оператори в тілі функції змінять значення якого-небудь аргументу, то ця зміна не торкнеться змінної, чиє значення передавалося як аргумент.
* Об'єкти (і вбудовані, і визначені користувачем) передаються по посиланню. Це означає, що всі зміни властивостей об'єкту в тілі функції проводяться безпосередньо в самому об'єкті, а не в його локальній копії і, отже, зберігаються після повернення з функції. Наприклад
function setbrowser (browser) {
browser.name = «Internet Explorer«;
browser.version = «5.5»;
}
var mybrowser = {name: «Netscape Navigator«, version: «4.7»};
var x = mybrowser.name; // x рівне «Netscape Navigator»
setbrowser (mybrowser); // об'єкт mybrowser передається функції
var у = mybrowser.name; // у рівне «Internet Explorer»
2.16 Рекурсивні функції
Приведемо приклад функції, що обчислює факторіал числа (факторіал числа n рівний 1 * 2 *… * n):
function factorial (n) {
if (n <= 1)
return 1;
else
return (n * factorial (n-1));
}
2.17 Об'єкт arguments
При вході в тіло функції створюється локальний об'єкт arguments, який має наступні властивості:
* Властивість callee з атрибутами {Dontenum}. Початковим значенням цієї властивості є виконуваний в даний момент об'єкт Function. Цю властивість забезпечує можливість рекурсивного виклику безіменних функцій.
* Властивість length з атрибутами {Dontenum}. Початковим значенням цієї властивості є кількість фактичних аргументів, переданих функції при її виклику.
* Масив значень фактичних аргументів функції. Для доступу до значень масиву використовується синтаксис:
функція.arguments[i]
Цей об'єкт корисний в тих випадках, коли ми заздалегідь не знаємо кількості аргументів, які будуть передані даній функції. Приклад:
function initarray () {
this.length = initarray.arguments.length;
for (var i = 0; i < this. length; i++)
this[i]= initarray. arguments[i];
}
var myfriends = new initarray («Михайло», «Максим», «Сергій», «Леонід»);
3. Об'єкти
Javascript — це мова програмування, заснована на об'єктах. Всі об'єкти, доступні сценарію на мові Javascript, підрозділяються на три групи:
* вбудовані об'єкти виконуючої системи;
* об'єкти середовища, в якому виконується сценарій (тобто або об'єкти клієнта, або об'єкти сервера);
* призначені для користувача об'єкти, що створюються сценарієм в процесі його виконання.
Об'єкт Javascript — це неврегульований набір властивостей. Властивість, що є функцією, називається методом. Для доступу до властивості об'єкту використовується синтаксис:
Ім'я_об'єкта. Ім'я_властивості
Якщо назва властивості задана текстовим рядком, то доступ до властивості можливий і так:
Ім'я_обєкта [«ім'я_властивості»]
Цей синтаксис використовується оператором ітерації for.in.
Кожна властивість складається з назви, значення і набору наступних атрибутів:
Атрибут | Опис | |
DontEnum | Властивість не повинна | |
DontDelete | Спроба програмно видалити дану властивість буде проігнорована. | |
ReadOnly | Незмінна властивість. Спроба програмно змінити дану властивість буде проігнорована. | |
Нова властивість об'єкту створюється просто привласненням йому значення. Наприклад:
mybrowser.name = «Microsoft Internet Explorer«;
mybrowser.version = «5.5»;
У таких властивостей, створеним користувачем, всі перераховані вище атрибути скинуті в false.
Існує два способи створення нових об'єктів в Javascript, а саме:
1. Використання ініціалізатора об'єкту.
2. Використання конструктора об'єктів.
3.1 Ініціалізатор
Створення об'єктів з допомогою ініціалізатора дозволяє одночасно створити об'єкт і присвоїти значення всім або частини його властивостей. Він застосовується в тих випадках, коли ми створюємо об'єкт з унікальним набором властивостей. Ініціалізатор об'єкту має вигляд:
{властивість:значення [, властивість:значення]?}
Тут властивість — ідентифікатор, що задає ім'я властивості, а значення — вираз, що задає значення цієї властивості. Наприклад:
var mybrowser = {name: «Microsoft Internet Explorer«, version: «5.5»};
Додамо ще одну властивість об'єкту mybrowser, яка називається options і сама є об'єктом:
var mybrowser = {name: «Microsoft Internet Explorer«, version: «5.5»
options: {enablejava: true, enablecookies: false};
3.2 Конструктор
Створення об'єктів за допомогою конструктора застосовується в тих випадках, коли необхідно створити клас об'єктів з певним набором властивостей, а потім створювати нові об'єкти, просто указуючи, до якого класу вони повинні належати. Для цього потрібно спочатку створити конструктор об'єктів, який є функцією спеціального вигляду, а саме:
· ім'я функції задає ім'я створюваного класу об'єктів;
· тіло функції повинне містити привласнення початкових значень властивостям і методам створюваного об'єкту.
Наприклад:
function Browser (name, version) {
this.name = name;
this.version = version;
}
Тепер для створення нових об'єктів класу Browser досить викликати цей конструктор в операції new, наприклад:
var mybrowser = new Browser («Microsoft Internet Explorer«, «5.5»);
Або, наприклад, з властивістю options об'єкту Browser, яка сама є об'єктом:
function Options (enablejava, enablecookies) {
this.enableJava = enablejava;
this.enableCookies = enablecookies;
}
function Browser (name, version, options) {
this.name = name;
this.version = version;
this.options = options;
}
var myoptions = new Options (true, false);
var mybrowser = new Browser («Microsoft Internet Explorer«, «5.5», myoptions);
Для доступу до властивостей властивості options використовується синтаксис:
mybrowser.options.enableJava.
3.3 Методи
Оскільки методи є різновидом властивостей, вони створюються так само, як описано вище. Наприклад, якщо додати до конструктора об'єктів Browser метод aboutbrowser:
function showbrowser () {
document.write («Оглядач:» + this.name + «» + this. version);
}
function Browser (name, version) {
this.name = name;
this.version = version;
this.aboutBrowser = showbrowser;
}
Надалі викликати цей метод так:
mybrowser.aboutBrowser ().
Конструктор можна записати і коротше, використовуючи вкладене визначення функції:
function Browser (name, version) {
this.name = name;
this.version = version;
this.aboutBrowser = function () {
document.write («Оглядач:» + this.name + «» + this. version);
}
}
3.4 Зміна об'єкту
Нехай потрібно в процесі виконання сценарію додати нову властивість security класу об'єктів Options (що важливо — класу об'єктів, а не окремому його представникові myoptions). Для цього використовується властивість prototype об'єкту Function:
Options.prototype.security = null;
Тепер можна присвоїти значення новій властивості об'єкту:
mybrowser.options.security = «Висока»;
Для видалення властивостей об'єктів використовується операція delete, наприклад:
delete Options.prototype.security;
Javascript дозволяє нам задати новий прототип для класу призначених для користувача об'єктів (прототипи вбудованих об'єктів доступні тільки для читання). Розглянемо такий приклад:
function Circle (radius) {
this.radius = radius;
}
Circle.prototype.area = function () {
return Math. PI * this. radius * this. radius;
}
function Fullcircle (x, у, radius) {
this.x = x;
this.y = у;
this.radius = radius;
}
Fullcircle.prototype = Circle. prototype;
var mycircle = new Fullcircle (0, 0, 1);
document.write (mycircle.area ());
В даному прикладі спочатку визначається клас об'єктів Circle з властивістю radius і методом area, що повертає площу круга. Потім визначається клас Fullcircle, конструктор якого додатково містить координати центру кола. Потім указується, що він успадковує прототип клас Circle. Після цього створюється об'єкт mycircle і викликають його метод area, який він успадкував від прототипу класу Circle.
3.5 Видалення об'єктів
Видалити раніше створений об'єкт можна за допомогою операції delete, наприклад:
delete mybrowser;
4. Вбудовані об'єкти
Javascript містить глобальний об'єкт, який є середовищем його виконуючої системи, а також наступні вбудовані об'єкти:
Об'єкт | Опис | Об'єкт | Опис | |
Array | Масиви | Math | Математичні функції і константи | |
Boolean | Логічні об'єкти | Number | Числові об'єкти | |
Date | Дата і час | Object | Прототип інших об'єктів | |
Error | Виключення | RegExp | Регулярні вирази | |
Function | Функції | String | Рядкові об'єкти | |
4.1 Глобальний об'єкт
Глобальний об'єкт (Global) створюється виконуючою системою Javascript перед початком виконань сценарію. Це єдиний об'єкт, який не має імені, і тому доступ до його властивостям і методам здійснюється без імені об'єкту. З цієї причини їх іноді називають властивостями і методами верхнього рівня.
Властивості глобального об'єкту
Властивість | Опис | |
Infinity | Спеціальне значення «нескінченність» | |
NaN | Спеціальне значення «не число» | |
undefined | Невизначеність | |
Методи глобального об'єкту
Метод | Опис | |
Boolean | Перетворює об'єкт в логічне значення. | |
decodeURI | Декодує URI | |
decodeURIComponent | Декодує компонент URI | |
encodeURI | Кодує URI | |
encodeURIComponent | Кодує компонент URI | |
escape | Перетворює рядок в шістнадцятизначний код Unicode | |
eval | Виконує рядок кода JavaScrip | |
isFinite | Повертає true, якщо аргумент є кінцевим числом | |
isNaN | Повертає true, якщо аргумент рівний NaN | |
Number | Перетворює об'єкт в число. | |
Object | Перетворює значення в об'єкт. | |
parseFloat | Перетворює рядок в плаваюче число. | |
parseInt | Перетворює рядок в ціле число | |
String | Перетворює об'єкт в рядок | |
unescape | Перетворює шістнадцятизначний код Unicode в рядок | |
4.2 Об'єкт Object
Об'єкт Object — це примітивний об'єктний тип, похідними якого є всі решта об'єктів мови Javascript. Він має дві форми конструктора:
new Object()
new Object(значення)
Тут значення — будь-який вираз, щ задає примітивне значення об'єкту. Якщо воно не вказано, то створюється порожній об'єкт. Для створення порожнього об'єкту можна також використовувати ініціалізатор об'єкту:
{}
Приклади:
var а = new Object(); // порожній об'єкт
var b = {; // те ж саме
var з = new Object(true); // примітивне значення об'єкту true
Об'єкт Object міститься у всіх об'єктах Javascript, тому всі його методи і властивості їм доступні. Методи даного об'єкту можуть бути перевизначені в призначених для користувача об'єктах.
Властивості об'єкту Object
Властивість | Опис | |
constructor | Конструктор, який створив об'єкт. | |
prototype | Посилання на прототип класу об'єктів. | |
Методи об'єкту Object
Метод | Опис | |
hasownproperty | Перевіряє наявність заданої властивості | |
isprototypeof | Перевіряє, чи є об'єкт прототипом даного об'єкту | |
propertyisenumerable | Перевіряє наявність заданої ітеріруємого властивості. | |
tolocalestring | Перетворить об'єкт в рядок з урахуванням формату операційної системи. | |
tostring | Перетворить об'єкт в рядок. | |
valueof | Повертає примітивне значення об'єкту. | |
4.3 Об'єкт Function
Об'єкт Function — це прототип функціональних об'єктів. Він може бути створений двома способами:
function ім'я (аргументи?) {
оператори}
var ім'я = new Function ([аргументи]? оператори)
Перший варіант — це декларація функції. Сама по собі декларація функції не створює функціонального об'єкту; його створення відбувається у момент виклику цієї функції. Другий варіант — це виклик конструктора об'єкту Function, при якому функціональний об'єкт створюється явно. В цьому випадку і аргументи, і оператори повинні бути текстовими рядками.
Наприклад, для створення функції, що повертає суму двох аргументів, можна використовувати наступні два варіанти:
function sum (а, b) {
return а + b;
}
var sum = new Function («a», «b», «return а + b«);
У обох випадках виклик функції sum здійснюється оператором типу sum (3, 5).
4.4 Об'єкт Boolean
Об'єкт Boolean — це об'єктна реалізація примітивного булевого значення. Його конструктор має вигляд:
new Boolean (значення?)
Тут значення — будь-який логічний вираз, задаючий примітивне значення об'єкту. Якщо воно не вказане, то примітивне значення об'єкту рівне false.
Властивості об'єкту Boolean
Властивість | Опис | |
constructor | Конструктор, який створив об'єкт | |
prototype | Посилання на прототип класу об'єктів | |
Методи об'єкту Boolean
Метод | Опис | |
tostring | Перетворює об'єкт в рядок | |
valueof | Повертає примітивне значення об'єкту | |
4.5 Об'єкт Number
Об'єкт Number — це об'єктна реалізація примітивного числового значення. Його конструктор має вигляд:
new Number (значення?)
Тут значення — будь-який числовий вираз, що задає примітивне значення об'єкту. Якщо воно не задане, то примітивне значення об'єкту рівне +0.
Властивості об'єкту Number
Властивість | Опис | |
constructor | Конструктор, який створив об'єкт | |
Max_value | Найбільше позитивне значення числового типу | |
Min_value | Найменше позитивне значення числового типу | |
NAN | Спеціальне значення «Не число» | |
Negative_infinity | Спеціальне значення «Від'ємна нескінченність» | |
Positive_infinity | Спеціальне значення «Додатна нескінченність» | |
prototype | Посилання на прототип класу об'єктів | |
Методи об'єкту Number
Метод | Опис | |
toexponential | Перетворює примітивне значення об'єкту в рядок, що містить число в експоненціальній формі | |
tofixed | Перетворює примітивне значення об'єкту в рядок, що містить число з фіксованою комою | |
tolocalestring | Перетворює примітивне значення об'єкту в рядок у форматі операційної системи. | |
toprecision | Перетворює примітивне значення об'єкту в рядок, що містить число із заданою кількістю значущих цифр. | |
tostring | Перетворює примітивне значення об'єкту в рядок | |
valueof | Повертає примітивне значення об'єкту | |
4.6 Об'єкт String
Об'єкт String — це об'єктна реалізація примітивного строкового значення. Його конструктор має вигляд:
new String (значення?)
Тут значення — будь-який строковий вираз, що задає примітивне значення об'єкту. Якщо воно не вказане, то примітивне значення об'єкту рівне ««. Всі властивості і методи строкових об'єктів застосовні і до строкових констант. У цьому випадку виконуюча система створює тимчасовий строковий об'єкт, із значенням, заданим константою, виконує запитану дію, видаляє тимчасовий об'єкт і повертає результат. Крім методів, передбачених стандартом Ecmascript, оглядачі Microscape традиційно підтримують декілька методів об'єкту String, що забезпечують висновок рядки в теги HTML. Ці методи також описані нижче.
Властивості об'єкту String
Властивість | Опис | |
constructor | Конструктор, який створив об'єкт | |
Length | Кількість символів в рядку | |
prototype | Посилання на прототип класу об'єктів | |
Стандартні методи об'єкту String
Метод | Опис | |
charat. | Повертає символ, що знаходиться в даній позиції рядка | |
charcodeat | Повертає код символу, що знаходиться в даній позиції рядка | |
concat | Повертає конкатенацію рядків | |
fromcharcode. | Створює рядок з символів, заданих кодами Unicode | |
Indexof | Повертає позицію першого входження заданого підрядка. | |
lastindexof | Повертає позицію останнього входження заданого підрядка. | |
localecompare | Порівнює два рядки з урахуванням мови операційної системи. | |
match | Зіставляє рядок з регулярним виразом. | |
replace | Зіставляє рядок з регулярним виразом і замінює знайдений підрядок новим підрядком | |
search | Шукає зіставлення рядка з регулярним виразом | |
slice | Витягує частину рядка і повертає новий рядок. | |
split | Розбиває рядок на масив підрядків. | |
substr | Повертає підрядок, заданий позицією і довжиною. | |
substring | Повертає підрядок, заданий початковою і кінцевою позиціями | |
tolocalelowercase | Перетворить всі букви рядка в рядкових з урахуванням мови операційної системи | |
tolocaleuppercase | Перетворить всі букви рядка в прописних з урахуванням мови операційної системи | |
tolowercase | Перетворить всі букви рядка в рядкових | |
tostring | Перетворить об'єкт в рядок | |
touppercase | Перетворить всі букви рядка в прописних | |
valueof | Повертає примітивне значення об'єкту | |
Нестандартні методи об'єкту String
Метод | Опис | |
anchor | Створює закладку HTML (.) | |
big | Укладає рядок в теги . | |
blink | Укладає рядок в теги | |
bold | Укладає рядок в теги . | |
fixed | Укладає рядок в теги . | |
fontcolor | Укладає рядок в теги . | |
fontsize | Укладає рядок в теги . | |
italics | Укладає рядок в теги . | |
link | Створює гіперпосилання HTML (.) | |
small | Укладає рядок в теги . | |
strike | Укладає рядок в теги . | |
sub | Укладає рядок в теги . | |
sup | Укладає рядок в теги . | |
4.7 Об'єкт Array
Об'єкт Array використовується для створення масивів, тобто впорядкованих наборів елементів будь-якого типу. Доступ до елементу масиву проводиться по його номеру в масиві званому індексом елементу; позначається i-й елемент масиву, а як а[i]. Елементи масиву нумеруються з нуля. Для створення масивів використовуються наступні конструктори масивів:
new Array()
new Array(розмір)
new Array (елемент0, елемент1., елементn)
Тут розмір — будь-який числовий вираз, задаючий кількість елементів в масиві; елемент0, елемент1,…, елементn — будь-які вирази. Перший конструктор створює порожній масив, другий, — масив з розмір елементів, третій створює масив з N+1 елементів і привласнює їм відповідні значення. Якщо розмір не є числом без знаку, то створюється масив з єдиним елементом, що має це значення. Крім того, масив може бути створений за допомогою ініціалізатора масиву:
[елемент0, елемент1., елементn]
Приклади:
var а = new Array(5); // масив з 5 елементів
var b = new Array («рядок»); // масив з 1 елементу «рядок»
var з = new Array (1, 2, 3); // масив з 3 елементів: 1, 2 і 3
var d = [«1», «2», «3»]; // те ж саме
4.8 Об'єкт Date
Об'єкт Date призначений для маніпуляцій з датами і часом. Його примітивним значенням є число, рівне кількості мілісекунд щодо базового часу рівного півночі 1 січня 1970 р. по Грінвічському меридіану (UTC, Universal Coordinated Time). Якщо це значення рівне NAN, то воно вважається невизначеним. День складається з 86 400 000 мілісекунд. Діапазон значень Date від -100 000 000 днів до 100 000 000 днів щодо базового часу, що приблизно рівний 285 616 років в кожну сторону відліку. Для створення об'єктів Date використовуються наступні конструктори:
new Date()
new Date(число)
new Date(рядок)
new Date (рік, місяць, день [, часи [, мінути [, секунди [, мс]?]?]?]?)
Тут:
* число — числовий вираз, задаючий примітивне значення об'єкту в мілісекундах;
* рядок — строковий вираз, задаючий дату і час у форматі, описаному в методі parse;
* рік — числовий вираз, задаючий повний номер року (наприклад, 1988, а не 88);
* місяць — числовий вираз, задаючий номер місяця (0 = січень, 1 = лютий., 11 = грудень);
* день — числовий вираз, задаючий номер для в місяці від 1 до 31;
* годинник — необов’язковий числовий вираз, задаючий номер години від 0 до 23;
* хвилини — необов’язковий числовий вираз, задаючий номер хвилини від 0 до 59;
* секунди — необов’язковий числовий вираз, задаючий номер секунди від 0 до 59;
* мс — необов’язковий числовий вираз, задаючий номер мілісекунди від 0 до 999.
Перший конструктор створює об'єкт Date з поточною датою і часом за місцевим часом. Решта конструкторів створює об'єкт Date з датою і часом, заданими аргументами конструктора. Приклади:
var а = new Date(); // поточна дата і час
var b = new Date («May 21, 1958 10:15 AM«); // задана дата і час
var з = new Date (1958, 4, 21, 10, 15); // те ж саме в іншому форматі
4.9 Об'єкт Error
Об'єкти Error створюються при виникненні помилок в процесі виконання сценарію і містять інформацію про помилку, яка використовується операторами обробки виключень. Всі виключення підрозділяються на системні і призначені для користувача. Системні виключення генеруються виконуючою системою в процесі виконання сценарію призначені для користувача — самим сценарієм за допомогою оператора throw. Об'єкти Error відповідно також можуть бути створені виконуючою системою або сценарієм. Конструктор призначеного для користувача об'єкту Error має вид
NewError(message), де message — текст повідомлення про помилку.
4.10 Об'єкт Math
Об'єкт Math забезпечує доступ до різних математичних констант і функцій. Він існує в єдиному екземплярі і тому не має конструктора. Відповідно всі його властивості і методи є статичними і повинні викликатися зверненням до об'єкту Math, а не його реалізацій. Прототипу об'єкт Math немає.
Властивості об'єкту Math
Властивість | Опис | |
E | Основа натуральних логарифмів e | |
Ln10 | Число ln 10 | |
Ln2 | Число ln 2 | |
Log10e | Число lg e | |
Log2e | Число log2e | |
PI | Число | |
Sqrt12 | Квадратний корінь з ½ | |
Sqrt2 | Квадратний корінь з 2 | |
Методи об'єкту Math
abs | Повертає абсолютну величину аргументу | |
acos | Повертає арккосинус аргументу | |
asin | Повертає арксинус аргументу | |
atan | Повертає арктангенс аргументу | |
atan2 | Повертає арктангенс приватного від ділення аргументів | |
ceil | Повертає найменше ціле число, більше або рівніше аргументу | |
cos | Повертає косинус аргументу | |
exp | Повертає експоненту аргументу | |
floor | Повертає найбільше ціле число, менше або рівніше аргументу | |
log | Повертає натуральний логарифм аргументу | |
max | Повертає найбільший з аргументів | |
min | Повертає найменший з аргументів | |
pow | Підносить перший аргумент до ступеня, заданого другим | |
random | Генерує випадкове число в діапазоні від 0 до 1 | |
round | Округляє аргумент до найближчого цілого числа | |
sin | Повертає синус аргументу | |
sqrt | Повертає квадратний корінь з аргументу | |
tan | Повертає тангенс аргументу | |
4.11 Об'єкт Regexp
Об'єкт Regexp використовується для створення регулярних виразів.
5. Приклад написання калькулятора мовою JavaScript
// deklaracja zmiennych
var wynik=0, op=0, nowe=0, nowe2=0, done=1, oset=0, kropka, temp;
function reset (value)
{
document.form1.ekran.value = value;
wynik = 0,
op = 0,
nowe = 0,
nowe2 = 0;
done = 1;
oset = 0;
}
function wspolna (new_temp)
{
kropka = 1;
if (nowe || done) {
nowe = 0;
done = 0;
temp = new_temp;
}
for (var i=0; i
}
function button (ktory, ktory2)
{
temp = document. form1.ekran.value;
if (ktory2=='.') {
wspolna ('0');
if (kropka) {
temp += ktory2;
document.form1.ekran.value = temp;
oset = 0;
}
}
if (ktory>=0 && ktory<=9) {
wspolna ('');
if (temp==0 && kropka==1) temp='';
temp += ktory;
document.form1.ekran.value = temp;
oset = 1;
}
if (ktory2=='-' || ktory2=='+' || ktory2=='/' || ktory2=='*') {
if (nowe) op = ktory2
else {
if (! nowe2) {
op = ktory2;
wynik = temp;
nowe2=1;
}
else {
wynik = eval (wynik + op + temp);
op = ktory2;
document.form1.ekran.value = wynik;
}
oset=0;
nowe = 1;
}
}
if (ktory2=='1/x') {wynik = eval (1 / temp); reset (wynik);}
if (ktory2=='sqrt') {wynik = Math. sqrt (temp); reset (wynik);}
if (ktory2=='exp') {wynik = Math. exp (temp); reset (wynik);}
if (ktory2=='+/-') document. form1.ekran.value = eval (-temp);
if (ktory2=='=' && oset && op≠'0') reset (eval (wynik + op + temp));
if (ktory2=='C') reset (0);
if (document.form1.ekran.value[0] == '.')
document.form1.ekran.value = '0' + document. form1.ekran.value;
}
// ->
Показати весь текст