Назад     Оглавление     Индекс     Вперёд


Ядро JavaScript 1.5. Руководство по Использованию.




Глава 7  Работа с Объектами




JavaScript разработан с использованием простой объектно-ориентированной парадигмы. Объект - это конструкция со свойствами, которые являются переменными JavaScript или другими объектами. Объект также может иметь ассоциированные с ним функции, которые известны как методы объекта. В дополнение к имеющимся в Navigator клиентским и серверным объектам Вы можете определять свои собственные объекты.


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


Имеются следующие разделы:
 




Объекты и Свойства



Объект в JavaScript имеет ассоциированные с ним свойства. Вы получаете доступ к свойству очень просто:


объектаИмя.свойстваИмя


И имя объекта, и имя свойства чувствительны к регистру. Вы определяете свойство, присваивая ему значение. Например, предположим, имеется объект myCar (начиная отсюда, примем для удобства, что объект уже существует). Вы можете создать свойства make, model и year таким образом:


myCar.make = "Ford";
myCar.model = "Mustang";
myCar.year = 1969;


Массив является упорядоченным набором значений, ассоциированных с именем одной переменной. Свойства и массивы JavaScript очень тесно связаны; фактически они являются разными интерфейсами для одной и той же структуры данных. Так, например, Вы можете получить доступ к свойствам объекта myCar:


myCar["make"] = "Ford"
myCar["model"] = "Mustang"
myCar["year"] = 1967


Этот тип массива известен как ассоциативный массив, поскольку каждый элемент индекса ассоциирован также со строковым значением. Следующая функция отображает свойства и имя объекта как аргументы функции:


function show_props(obj, obj_name) {
   var result = "";
   for (var i in obj)
      result += obj_name + "." + i + " = " + obj[i] + "\n";
   return result
}


Итак, вызов функции show_props(myCar, "myCar") вернёт:


myCar.make = Ford
myCar.model = Mustang
myCar.year = 1967




Создание Новых Объектов



В JavaScript есть несколько предопределённых объектов. Кроме того, Вы можете создать Ваши собственные объекты. В JavaScript 1.2 и позднее Вы можете создать объект, используя инициализатор объекта. Альтернативно, Вы можете сначала создать конструктор функции, а затем - инстанциировать объект (создать экземпляр), используя эту функцию и оператор new.



Использование Инициализаторов Объектов



Помимо создания объектов с использованием конструктора функции, Вы можете создать объекты, используя инициализаторы объектов. Использование инициализаторов иногда называется созданием объектов в литеральной нотации. "Инициализатор Объекта" следует терминологии C++.


Синтаксис объекта, использующего инициализатор, таков:


объектаИмя = {свойство1:значение1, свойство2:значение2,..., свойствоN:значениеN}


где объектаИмя это имя нового объекта, каждое свойствоI является идентификатором (именем, числом или строковым литералом), а каждое значениеI является выражением, значение которого присваивается свойствуI.
объектаИмя и присвоение являются необязательными. Если Вам не нужно ссылаться где-либо на этот объект, то нет необходимости присваивать его переменной.


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


Следующий оператор создаёт объект и присваивает его переменной x, если, и только если, выражение cond будет true:


if (cond) x = {hi:"there"}


Следующий пример создаёт myHonda с тремя свойствами. Обратите внимание, что свойство engine также является объектом со своими собственными свойствами.


myHonda = {color:"red",wheels:4,engine:{cylinders:4,size:2.2}}


Вы можете также использовать инициализаторы объектов для создания массивов. См. "Литералы Массива".


JavaScript 1.1 и ранее.
 

Вы не можете использовать инициализаторы объектов. Можно создать объекты только с помощью конструкторов функций или используя функцию, предоставляемую для этих целей каким-нибудь другим объектом. См. Использование Конструктора Функции.



Использование Конструктора Функции



Альтернативно Вы можете создать объект в два этапа:

  1. Определить тип объекта, написав конструктор функции.

  2. Создав экземпляр объекта с помощью оператора new.


Чтобы определить тип объекта, создайте функцию для типа объекта, которая специфицирует его имя , свойства и методы. Например, предположим, Вы хотите создать тип объекта для автомобилей и назвать его car, и чтобы он имел свойства make, model, year и color. Для этого нужно написать такую функцию:


function car(make, model, year) {
   this.make = make;
   this.model = model;
   this.year = year;
}


Обратите внимание на использование this для присвоения значений свойствам объекта на базе значений, передаваемых в эту функцию.


Теперь можно создать объект с названием mycar:


mycar = new car("Eagle", "Talon TSi", 1993);


Этот оператор создаёт объект mycar и присваивает его свойствам специфицированные значения. Теперь значением свойства mycar.make является строка "Eagle", значением свойства mycar.year - целое число 1993 и так далее.


Можно создать любое количество объектов car с помощью оператора new. Например,


kenscar = new car("Nissan", "300ZX", 1992);
vpgscar = new car("Mazda", "Miata", 1990);


Объект может иметь свойство, которое само является объектом. Например, предположим, Вы определяете объект person:


function person(name, age, sex) {
   this.name = name
   this.age = age
   this.sex = sex
}


и затем инстанциируете два новых объекта person:


rand = new person("Rand McKinnon", 33, "M");
ken = new person("Ken Jones", 39, "M");


Затем Вы можете переписать определение car, чтобы включить свойство owner, принимаемое объектом person:


function car(make, model, year, owner) {
   this.make = make;
   this.model = model;
   this.year = year;
   this.owner = owner
}


Для создания новых экземпляров Вы теперь используете:


car1 = new car("Eagle", "Talon TSi", 1993, rand);
car2 = new car("Nissan", "300ZX", 1992, ken);


Заметьте, что теперь, вместо передачи литеральной строки или целочисленного значения при создании новых объектов, вышеприведённые операторы передают rand и ken как аргументы свойства owner. Теперь, чтобы определить имя владельца машины car2, Вы осуществляете доступ к свойству:


car2.owner.name


Заметьте, что таким образом Вы всегда добавляете свойство к ранее определённому объекту. Например, оператор


car1.color = "black"


добавляет свойство color объекту car1 и присваивает ему значение "black." Однако это не влияет на другие объекты. Чтобы добавить новое свойство ко всем объектам того же типа, Вы должны добавить свойство в определение типа объекта car.



Индексирование Свойств Объекта



В JavaScript 1.0 Вы можете ссылаться на свойства объектов по имени свойства или по порядковому индексу. В JavaScript 1.1 и позднее, однако, если Вы первоначально определили свойство по имени, Вы всегда обязаны будете обращаться к нему по имени, и, если Вы первоначально определили свойство по индексу, Вы всегда обязаны будете обращаться к нему по его индексу.


Это применимо при создании объекта и его свойств с помощью конструктора функции, как в примере с типом объекта Car, и если Вы определяете отдельные свойства явным образом (например, myCar.color = "red"). Так, если Вы определили свойства объекта по индексу, как, например, myCar[5] = "25 mpg", Вы можете затем обращаться к этому свойству только как myCar[5].


Исключением из этого правила являются объекты, отражённые из HTML, такие как массивы форм. Вы всегда обращаетесь к этим объектам по порядковому номеру (зависящим от местонахождения объекта в документе) или по их именам (если они определены). Например, если второй тэг <FORM> в документе имеет в атрибуте NAME значение "myForm", Вы можете ссылаться на форму document.forms[1], или document.forms["myForm"] или document.myForm.



Определение Свойств для Типа Объекта



Вы можете добавлять свойство к ранее определённому типу объекта через использование свойства prototype. Так определяется свойство, которое совместно используется всеми объектами специфицированного типа, а не только одним данным экземпляром этого объекта. Следующий код добавляет свойство color ко всем объекта типа car, а затем присваивает значение свойству color объекта car1.


Car.prototype.color=null;
car1.color="black";


См. дополнительную информацию о свойстве prototype объекта Function в книге Ядро JavaScript. Справочник.



Определение Методов



Метод это функция, ассоциированная с объектом. Метод определяется так же, как стандартная функция. Затем используется следующий синтаксис для ассоциирования функции с уже существующим объектом:


object.methodname = function_name


где object это существующий объект, methodname это имя определяемого Вами метода, а function_name имя функции.


Вы затем вызываете метод в контексте объекта:


object.methodname(params);


Вы можете также определить методы для типа объекта, включив определение метода в конструктор функции. Можно определить функцию, которая форматирует и отображает свойства ранее определённых car-объектов; например,


function displayCar() {
   var result = "A Beautiful " + this.year + " " + this.make
      + " " + this.model;
   pretty_print(result);
}


где pretty_print это функция для отображения горизонтальной линии и строки. Обратите внимание на использование this для ссылки на объект, которому принадлежат методы.


Можно сделать эту функцию методом в car, добавив оператор:


this.displayCar = displayCar;


к определению объекта. Так полное определение car будет выглядеть теперь:


function car(make, model, year, owner) {
   this.make = make;
   this.model = model;
   this.year = year;
   this.owner = owner;
   this.displayCar = displayCar;
}


Теперь Вы можете вызвать метод displayCar в каждом экземпляре:


car1.displayCar()
car2.displayCar()


Это даст результат, показанный на рисунке.


Рисунок 7.1  Отображение вывода метода




Использование Слова this для Ссылок на Объект



JavaScript имеет специальное ключевое слово this, которое может использоваться внутри метода для ссылки на текущий объект. Например, если у Вас имеется функция validate, проверяющая значение свойства объекта и значения high и low:


function validate(obj, lowval, hival) {
   if ((obj.value < lowval) || (obj.value > hival))
      alert("Invalid Value!")
}


то Вы можете вызвать validate в обработчике события onChange любого элемента формы, используя this для передачи обработчику элемента формы, как в этом примере:


<INPUT TYPE="text" NAME="age" SIZE=3
   onChange="validate(this, 18, 99)">


В общем, this ссылается в методе на вызывающий объект.


В сочетании со свойством формы, this может обращаться к родительской форме текущего объекта. В следующем примере форма myForm содержит Text-объект и кнопку. Если пользователь щёлкает на кнопке, значением Text-объекта становится имя формы. Обработчик нажатия кнопки onClick использует this.form для ссылки на родительскую форму, myForm.


<FORM NAME="myForm">
Form name:<INPUT TYPE="text" NAME="text1" VALUE="Beluga">
<P>
<INPUT NAME="button1" TYPE="button" VALUE="Show Form Name"
   onClick="this.form.text1.value=this.form.name">
</FORM>



Определение Getter'ов и Setter'ов



Getter это метод, получающий значение отдельного свойства. Setter это метод, устанавливающий значение отдельного свойства. Вы можете определить getter и setter в любом предопределённом объекте ядра или в пользовательском объекте, поддерживающем добавление новых свойств. Синтаксис определения getter и setter использует синтаксис литерала объекта.


Следующая сессия JS-оболочки иллюстрирует, как getter и setter могут работать для определённого пользователем объекта o. JS-оболочка является приложением, позволяющим разработчикам тестировать код JavaScript в пакетном режиме или интерактивно.


Свойствами объекта о являются:
 


Эта сессия JavaScript иллюстрирует то, как getter и setter могут расширять прототип Date, добавляя свойство year ко всем экземплярам предопределённого класса Date. Она использует существующие методы getFullYear и setFullYear класса Date для поддержки getter и setter свойства year.


Эти операторы определяют getter и setter для свойства year:


js> var d = Date.prototype;
js> d.year getter= function() { return this.getFullYear(); };

js> d.year setter= function(y) { return this.setFullYear(y); };


Следующие операторы используют getter и setter в Date-объекте:


js> var now = new Date;
js> print(now.year);
2000
js> now.year=2001;
987617605170
js> print(now);
Wed Apr 18 11:13:25 GMT-0700 (Pacific Daylight Time) 2001



Удаление Свойств



Вы можете удалить свойство оператором delete. Этот код показывает, как удалить свойство.


//Создаётся новое свойство myobj с двумя свойствами a и b.
myobj = new Object;
myobj.a=5;
myobj.b=12;

//Удаляется свойство a, и в myobj остаётся только свойство b.
delete myobj.a;


Можно также использовать delete для удаления глобальной переменной, если ключевое слово var не было использовано при объявлении этой переменной:


g = 17;
delete g;


См. "delete".




Предопределённые Объекты Ядра



В этом разделе рассмотрены предопределённые объекты ядра JavaScript: Array, Boolean, Date, Function, Math, Number, RegExp и String.



Объект Array



В JavaScript нет отдельного типа для массива данных. Однако Вы можете использовать предопределённый объект Array и его методы для работы с массивами в Ваших приложениях. Объект Array имеет методы для манипулирования массивами: объединения, разворачивания и сортировки. Он имеет также свойство для определения размера массива и другие свойства для использования с регулярными выражениями.


Массив это упорядоченный набор значений, к которым можно обращаться по имени и по индексу. Например, Вы имеете массив emp, содержащий имена служащих, индексированный по именам служащих. Так, emp[1] это служащий номер 1, emp[2] - служащий номер 2 и так далее.


Создание Массива

Чтобы создать Array-объект:


1. arrayObjectName = new Array(element0, element1, ..., elementN)
2. arrayObjectName = new Array(arrayLength)


arrayObjectName это имя нового объекта, либо свойство существующего объекта. При использовании Array-свойств и методов, arrayObjectName это либо имя существующего Array-объекта, либо свойство существующего объекта.


element0, element1, ..., elementN это список значений элементов массива. Когда специфицирована эта форма, массив инициализируется специфицированными значениями в качестве элементов массива, а свойство length массива устанавливается в количество аргументов.


arrayLength это начальный размер массива. Следующий код создаёт массив из 5 элементов:


billingMethod = new Array(5)


Литералы массива также являются Array-объектами; например, нижеследующий литерал является Array-объектом. См. "Литералы Массива".


coffees = ["French Roast", "Columbian", "Kona"]

Наполнение Массива
 

Вы можете заполнить массив путём присвоения значений его элементам. Например,


emp[1] = "Casey Jones"
emp[2] = "Phil Lesh"
emp[3] = "August West"


Вы можете также заполнить массив при его создании:


myArray = new Array("Hello", myVar, 3.14159)

Обращение к Элементам Массива

Вы можете обратиться к элементам массива через использование порядкового номера элемента. Например, Вы определили массив:


myArray = new Array("Wind","Rain","Fire")


Затем Вы обращаетесь к первому элементу массива myArray[0], а ко второму элементу - myArray[1].


Индексы элементов начинаются с нуля (0), но размер массива (например, myArray.length) отражает точное количество элементов в массиве.


Array-Методы

Array-объект имеет следующие методы:
 


Например, Вы определили следующий массив:


myArray = new Array("Wind","Rain","Fire")


myArray.join() возвращает "Wind,Rain,Fire";
myArray.reverse переворачивает массив так, что myArray[0] будет "Fire", myArray[1] - "Rain", а myArray[2] - "Wind".
myArray.sort сортирует массив так, что myArray[0] будет "Fire", myArray[1] - "Rain", в myArray[2] - "Wind".


Двухмерные Массивы

Следующий код создаёт двухмерный массив:


a = new Array(4)
for (i=0; i < 4; i++) {
   a[i] = new Array(4)
   for (j=0; j < 4; j++) {
      a[i][j] = "["+i+","+j+"]"
   }
}


Создаётся массив, состоящий из следующих рядов/rows:


Row 0:[0,0][0,1][0,2][0,3]
Row 1:[1,0][1,1][1,2][1,3]
Row 2:[2,0][2,1][2,2][2,3]
Row 3:[3,0][3,1][3,2][3,3]


Массивы и Регулярные Выражения

Ели массив является результатом совпадения регулярного выражения и строки, этот массив возвращает свойства и элементы, предоставляющие информацию о совпадении. Массив является return-значением методов RegExp.exec, String.match и String.split. Об использовании массивов с регулярными выражениями см. Главу 4, "Регулярные Выражения".



Объект Boolean



Объект Boolean является оболочкой вокруг примитивного типа данных Boolean. Для создания Boolean-объекта используйте следующий синтаксис:


booleanObjectName = new Boolean(value)


Не путайте примитивные Boolean-значения true и false со значениями true и false Boolean-объекта. Любой объект, значение которого не undefined , null, 0, NaN или не пустая строка, включая Boolean-объект со значением false, вычисляется в true при передаче условному оператору. См. "Оператор if...else".



Объект Date



В JavaScript нет типа данных data. Однако Вы можете использовать для работы с датами и временем объект Date и его методы. Объект Date имеет большое количество методов для установки, получения и манипулирования датами. Он не имеет никаких свойств.


JavaScript обрабатывает даты аналогично Java. Эти два языка имеют много аналогичных date-методов и оба хранят даты как количество миллисекунд, прошедших после 1 января 1970 года, 00:00:00.


Объект Date имеет диапазон значений от -100,000,000 до 100,000,000 дней в обе стороны от 01 января 1970 года UTC (Всемирного Времени).


Для создания Date-объекта:


dateObjectName = new Date([parameters])


где dateObjectName это имя создаваемого Date-объекта; это может быть новый объект или свойство существующего объекта.


Параметры/parameters в этом синтаксисе могут быть:


JavaScript 1.2 и ранее.


Объект Date ведёт себя так:



Методы Объекта Date

Методы объекта Date для работы с датами и временем подразделяются на следующие категории:


С помощью методов "get" и "set" Вы можете по отдельности получать и устанавливать значения секунд, минут, часа, дня месяца, дня недели, месяца и года. Имеется метод getDay, возвращающий день недели, но отсутствует парный метод setDay, поскольку день недели устанавливается автоматически. Эти методы используют целые числа для представления своих значений:


Например, Вы определили следующую дату:


Xmas95 = new Date("December 25, 1995")


Тогда Xmas95.getMonth() возвратит 11, а Xmas95.getFullYear() возвратит 1995.


Методы getTime и setTime используются при сравнении дат. Метод getTime возвращает количество миллисекунд, прошедших после 1 января 1970 года, 00:00:00, для Date-объекта.


Например, следующий код выводит количество дней, оставшихся до конца текущего года:


today = new Date()
endYear = new Date(1995,11,31,23,59,59,999) // Устанавливает день и месяц
endYear.setFullYear(today.getFullYear()) // Устанавливает год в текущее значение
msPerDay = 24 * 60 * 60 * 1000 // Количество миллисекунд в день
daysLeft = (endYear.getTime() - today.getTime()) / msPerDay
daysLeft = Math.round(daysLeft) //возвращает количество оставшихся в этом году дней


Этот пример создаёт Date-объект по имени today, содержащий текущую дату. Затем создаётся Date-объект endYear и в него устанавливается текущее значение года. Затем, путём использования количества миллисекунд в день, вычисляется количество дней от сегодняшнего числа до до endYear через использование метода getTime и оно округляется до целого количества дней.


Метод parse применяется для присвоения значений date-строк существующим Date-объектам. Например, следующий код использует методы parse и setTime для присвоения значения даты объекту IPOdate:


IPOdate = new Date()
IPOdate.setTime(Date.parse("Aug 9, 1995"))

Использование Объекта Date: Пример

В этом примере функция JSClock() возвращает время в формате электронного циферблата:


function JSClock() {
   var time = new Date()
   var hour = time.getHours()
   var minute = time.getMinutes()
   var second = time.getSeconds()
   var temp = "" + ((hour > 12) ? hour - 12 : hour)
   if (hour == 0)
      temp = "12";
   temp += ((minute < 10) ? ":0" : ":") + minute
   temp += ((second < 10) ? ":0" : ":") + second
   temp += (hour >= 12) ? " P.M." : " A.M."
   return temp
}


Функция JSClock сначала создаёт новый Date-объект time; поскольку аргументы не заданы, time создаётся с текущими датой и временем. Затем вызываются методы getHours, getMinutes и getSeconds, присваивающие текущие значения часа, минут и секунд переменным hour, minute и second.


Следующие 4 оператора строят строковое значение на базе time. Первый оператор создаёт переменную temp, присваивая её значение путём использования условного выражения; если hour больше 12, (hour - 12), иначе просто hour, если только hour не 0, тогда он становится 12.


Следующий оператор присоединяет значение minute к temp. Если значение minute меньше 10, условное выражение прибавляет строку с предшествующим нулём; иначе добавляется строка с разделяющим двоеточием. Затем оператор присоединяет второе значение к temp тем же способом.


Наконец, условное выражение присоединяет "PM" к temp, если hour равен 12 или больше; иначе присоединяется "AM".



Объект Function



Предопределённый объект Function специфицирует строку кода JavaScript, которая компилируется как функция.


Создание Function-объекта:


functionObjectName = new Function ([arg1, arg2, ... argn], functionBody)


functionObjectName это имя переменной или свойства существующего объекта. Это также может быть объект с последующим именем обработчика события, в нижнем регистре, таким как window.onerror.


arg1, arg2, ... argn это аргументы, используемые функцией в качестве имён формальных аргументов. Каждый обязан быть строкой, соответствующей верному идентификатору JavaScript; например, "x" или "theForm".


functionBody это строка, специфицирующая код JavaScript, компилируемый как тело функции.


Function-объекты вычисляются всякий раз при их использовании. Это менее эффективно, чем объявление функции и вызов её в коде, поскольку объявленные функции компилируются.


Дополнительно Вы можете также использовать оператор function и выражение function. См. книгу Ядро JavaScript. Справочник.


Следующий код присваивает функцию переменной setBGColor. Эта функция устанавливает цвет фона документа.


var setBGColor = new Function("document.bgColor='antiquewhite'")


Чтобы вызвать Function-объект, Вы можете специфицировать имя переменной так, будто это функция. Следующий код выполняет функцию, специфицированную переменной setBGColor:


var colorChoice="antiquewhite"
if (colorChoice=="antiquewhite") {setBGColor()}


Вы можете назначить функцию обработчику события одним из следующих способов:


1. document.form1.colorButton.onclick=setBGColor
2. <INPUT NAME="colorButton" TYPE="button"
      VALUE="Change background color"
      onClick="setBGColor()">


Создание переменной setBGColor, показанное выше, аналогично объявлению следующей функции:


function setBGColor() {
   document.bgColor='antiquewhite'
}


Присвоение функции переменной похоже на объявление функции, но есть и отличия:


Вы можете вложить одну функцию в другую. Вложенная (внутренняя) функция является private для своего контейнера (внешней функции):



Объект Math



Предопределённый объект Math имеет свойства и объекты для работы с математическими константами и функциями. Например, свойство PI объекта Math имеет значение pi (3.141...), которое Вы можете использовать в приложении таким образом:


Math.PI


Аналогично и стандартные математические функции являются методами объекта Math. Сюда входят тригонометрические, логарифмические, экспоненциальные и другие функции. Например, Если Вы хотите использовать тригонометрическую функцию sine/синус, Вы можете записать:


Math.sin(1.56)


Заметьте, что все тригонометрические методы объекта Math принимают аргументы в радианах.


В таблице содержится резюме по методам объекта Math.


Таблица 7.1   Методы Объекта Math

Метод
Описание
abs

Абсолютное значение.

sin, cos, tan

Стандартные тригонометрические функции; аргумент в радианах.

acos, asin, atan, atan2

Инверсные тригонометрические функции; возвращают значения в радианах.

exp, log

Экспоненциальный и натуральный логарифмы, база e.

ceil

Возвращает ближайшее целое число, больше или равное аргументу.

floor

Возвращает наибольшее целое число, меньше или равное аргументу.

min, max

Возвращает больший или меньший (соответственно) из двух аргументов.

pow

Степень; первый аргумент это база, второй показатель степени.

random

Возвращает случайное число в диапазоне от 0 до 1.

round

Округляет аргумент до ближайшего целого.

sqrt

Квадратный корень.


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



Объект Number



Объект Number содержит свойства для работы с числовыми константами, такими как максимальное значение, not-a-number и infinity/бесконечность. Вы не можете изменить значения этих свойств и будете использовать их таким образом:


biggestNum = Number.MAX_VALUE
smallestNum = Number.MIN_VALUE
infiniteNum = Number.POSITIVE_INFINITY
negInfiniteNum = Number.NEGATIVE_INFINITY
notANum = Number.NaN


Вы всегда обращаетесь к свойствам предопределённого объекта Number так, как показано выше, а не как к свойствам Number-объекта, созданного Вами.


В таблице дано резюме по свойствам объекта Number.


Таблица 7.2   Свойства Объекта Number

Свойство
Описание
MAX_VALUE

Наибольшее представимое число.

MIN_VALUE

Наименьшее представимое число.

NaN

Специальное значение "not a number/не число".

NEGATIVE_INFINITY

Специальное значение отрицательной  бесконечность; возвращается при переполнении.

POSITIVE_INFINITY

Специальное значение положительной бесконечности; возвращается при переполнении.


Прототип Number предоставляет методы для запроса информации от Number-объектов в разных форматах. В следующей таблице дано резюме по методам Number.prototype.


Таблица 7.3   Методы Number.prototype

Метод
Описание
toExponential

Возвращает строку - число в экспоненциальной нотации.

toFixed

Возвращает строку - число в нотации с плавающей точкой.

toPrecision

Возвращает строку - число специфицированной точности в нотации с плавающей точкой.

toSource

Возвращает литерал объекта - специфицированный Number-объект; Вы можете использовать это значение для создания нового объекта. Переопределяет метод Object.toSource.

toString

Возвращает строку - специфицированный объект. Переопределяет метод Object.toString.

valueOf

Возвращает примитивное значение специфицированного объекта. Переопределяет метод Object.valueOf.



Объект RegExp



Объект RegExp позволяет работать с регулярными выражениями. описан в Главе 4, "Регулярные Выражения."



Объект String



Объект String является оболочкой вокруг примитивного типа данных string. Не путайте строковой литерал с объектом String. Например, следующий код создаёт строковой литерал s1 и String-объект s2:


s1 = "foo" //создаётся строковое литеральное значение
s2 = new String("foo") //создаётся String-объект


Вы можете вызвать любой из методов объекта String в строковом литеральном значении - JavaScript автоматически конвертирует строковой литерал во временный String-объект, вызывает метод, затем уничтожает временный String-объект. Вы можете также использовать со строковым литералом свойство String.length.


Вы, как правило, должны использовать строковые литералы, если только Вам не нужно использовать именно String-объект, так как String-объекты могут иметь непредсказуемое поведение. Например:


s1 = "2 + 2" //строковое литеральное значение
s2 = new String("2 + 2")//String-объект
eval(s1) //возвращает число 4
eval(s2) //возвращает строку "2 + 2"


Объект String имеет только одно свойство, length, которое обозначает количество символов в строке. Например, следующий код присваивает переменной x значение 13, так как строка "Hello, World!" содержит 13 символов:


myString = "Hello, World!"
x = mystring.length


Объект String имеет методы двух типов: возвращающие варианты самой строки, такие методы как substring и toUpperCase, и методы, которые возвращают HTML-форматированную версию строки, такие методы как bold и link.


Например, используя предыдущий пример, и mystring.toUpperCase(), и "hello, world!".toUpperCase() возвращают строку "HELLO, WORLD!"


Метод substring принимает два аргумента и возвращает подстроку между двумя аргументами. Используя предыдущий пример, mystring.substring(4, 9) возвращает строку "o, Wo". См. метод substring объекта String в книге Ядро JavaScript. Справочник.


Объект String имеет также несколько методов для автоматического HTML-форматирования, такие как bold - для создания текста с "жирным" шрифтом и link - для создания гиперссылки. Например, Вы можете создать гиперссылку на гипотетический URL методом link:


mystring.link("http://www.helloworld.com")


В таблице дано резюме по методам String-экземпляров.


Таблица 7.4   Методы Экземпляров Объекта String


Метод
Описание
anchor

Создаёт именованный "якорь" HTML.

big, blink, bold,
fixed, italics, small,
strike, sub, sup

Форматируют строку HTML.

charAt, charCodeAt

Возвращают символ или код символа в специфицированной позиции в строке.

indexOf, lastIndexOf

Возвращают позицию специфицированной подстроки в строке или последнюю позицию специфицированной подстроки, соответственно.

link

Создаёт гиперссылку HTML.

concat

Объединяет текст двух строк и возвращает новую строку.

fromCharCode

Конструирует строку из специфицированной последовательности значений Unicode. Это метод класса String, а не String-экземпляра.

split

Делит String-объект на массив строк, разделяя строку на подстроки.

slice

Извлекает часть строки и возвращает новую строку.

substring, substr

Возвращает специфицированный поднабор строки, специфицируя либо начальный и конечный индексы, либо начальный индекс и размер.

match, replace, search

Работа с регулярными выражениями.

toLowerCase, toUpperCase

Возвращает все символы в строке в нижнем или верхнем регистре, соответственно.



Назад     Оглавление     Индекс     Вперёд


На главную страницу