ISBN 966-7343-29-5 К.305

УДК 531.0
ББК 22.311
  К.305

Клиентский JavaScript. Руководство по Использованию

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

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

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

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

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

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

objectName.propertyName

И имя объекта, и имя свойства чувствительны к регистру символов. Вы определяете свойство, присваивая ему значение. Например, имеется объект 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++.

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

objectName = {property1:value1, property2:value2,..., propertyN:valueN}

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

Если объект создается инициализатором в скрипте верхнего уровня, 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.

Для того чтобы определить тип объекта, создайте функцию для типа объекта, которая специфицирует имя, свойства и методы. Например, Вы хотите создать тип объекта для автомобилей/cars. Вы называете тип объекта 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 или позднее, однако, если Вы первоначально определили свойство по имени, Вы обязаны всегда обращаться к нему по имени и, если Вы первоначально определили свойство по индексу, Вы обязаны всегда обращаться к нему по индексу.

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

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

При сочетании со свойством form, 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>

Удаление объектов

Вы можете удалить объект оператором delete. Следующий код показывает, как удалить объект.

myobj=new Number()
delete myobj   // удаляет объект и возвращает true

См. также "delete".

JavaScript 1.1. Вы можете удалить объект, установив ссылку на объекта в null (если это последняя ссылка на объект). JavaScript "финализирует" объект немедленно, как часть операции присвоения.

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

Предопределенные объекты ядра

В этом разделе рассматриваются предопределенные объекты ядра JavaScript: Array, Boolean, Date, Function, Math, Number, RegExp и String. Предопределенные клиентские объекты рассматриваются в Главе 11, "Использование Объектов Navigator'а".

Объект Array

В JavaScript нет типа данных array (массив). Однако Вы может использовать предопределенный объект 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 имеет следующие методы:

  • concat    объединяет два массива и возвращает новый массив.
  • join      объединяет все элементы массива в строку.
  • pop              удаляет последний элемент массива и возвращает этот элемент.
  • push            добавляет один или более элементов в конец массива и возвращает этот добавленный элемент.
  • reverse      разворачивает элементы массива: первый элемент становится последним, а последний - первым.
  • shift          удаляет первый элемент массива и возвращает этот элемент.
  • slice          извлекает раздел массива возвращает новый массив.
  • splice        добавляет и/или удаляет элементы массива.
  • sort            сортирует элементы массива.
  • unshift      прибавляет один или более элементов в начало массива и возвращает новый размер массива.

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

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+"]"
   }
}

Следующий код выводит массив:

for (i=0; i < 4; i++) {
   str = "Row "+i+":"
   for (j=0; j < 4; j++) {
      str += a[i][j]
   }
   document.write(str,"<p>")
}

Будет выведено:

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.replace. Об использовании массивов с регулярными выражениями см. Главу 4 "Регулярные Выражения".

Объект Boolean

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

booleanObjectName = new Boolean(value)

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

Объект Date

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

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

Диапазон объекта Date от -100,000,000 до 100,000,000 дней относительно 01 January, 1970 UTC.

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

dateObjectName = new Date([parameters])

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

Значение parameters может быть одним из:

  • Ничем: создается текущая дата и время. Например, today = new Date().
  • Строкой, представляющей дату в следующей форме: "Month day, year hours:minutes:seconds".
    Например, Xmas95 = new Date("December 25, 1995 13:30:00").
    Если Вы опустите hours, minutes или seconds, значение будет установлено в 0.
  • Набором целочисленных значений для year, month и day. Например, Xmas95 = new Date(1995,11,25).
    Набором целочисленных значений для year, month, day, hour, minute и seconds. Например, Xmas95 = new Date(1995,11,25,9,30,0).

JavaScript 1.2 и предыдущие версии. Объект Date работает так:

  • Даты до 1970 не допускаются.
  • JavaScript зависит от платформы, на которой используется; поведение объекта Date варьируется от платформы к платформе.

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

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

  • "set"-методы для установки значений объектов Date.
  • "get"-методы для получения значений даты и времени из объектов Date.
  • "to"-методы для возвращения строковых значений из объектов Date.
  • parse и UTC-методы для разбора Date-строк.

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

  • Секунды и минуты: от 0 до 59
  • Час: от 0 до 23
  • День недели: от 0 (Sunday) до 6 (Saturday)
  • Число месяца: от 1 до 31
  • Месяц: от 0 (January) до 11 (December)
  • Год: годы после 1900

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

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

Тогда Xmas95.getMonth() возвращает 11, а Xmas95.getFullYear() возвращает 95.

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

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

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

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

Метод parse используется для присвоения значений из строк с датой существующим 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)
   temp += ((minute < 10) ? ":0" : ":") + minute
   temp += ((second < 10) ? ":0" : ":") + second
   temp += (hour >= 12) ? " P.M." : " A.M."
   return temp
}

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

Следующие четыре оператора строят строковое значение на основе этого времени.

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

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

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

Объект Function

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

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

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

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

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

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

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 имеет значение pi (3.141...), которое Вы можете использовать в приложениях так:

Math.PI

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

Math.sin(1.56)

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

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

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

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

sin, cos, tan

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

acos, asin, atan

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

exp, log

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

ceil

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

floor

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

min, max

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

pow

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

round

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

sqrt

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

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

Часто бывает удобнее использовать этот объект с оператором with, когда большой участок кода использует математические константы и методы, чтобы не нужно было постоянно печатать "Math". Например,

with (Math) {
   a = PI * r*r
   y = r*sin(theta)
   x = r*cos(theta)
}

Объект Number

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

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

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

Объект 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.3 Методы объекта String
Метод Описание
anchor

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

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

Создают HTML-форматированную строку

charAt, charCodeAt

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

indexOf, lastIndexOf

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

link

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

concat

Комбинирует текст двух строк и возвращает новую строку

fromCharCode

Конструирует строку из специфицированной последовательности кодовых значений набора ISO-Latin-1

split

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

slice

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

substring, substr

Возвращают специфицированный поднабор строки, специфицируя индексы start и end или start-индекс и размер

match, replace, search

Используются для работы с регулярными выражениями

toLowerCase, toUpperCase

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

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



 

 

Наши ссылки на веб-страницы, можно скопировать html-код ссылки


Книги по математике и физике, программы HTML, компьютерные технологии

Документация HTML, XML, JavaScript на русском языке для разработчиков W3C

   Примечание. Удобная текстовая ссылка для форумов, блогов, цитирования материалов веб-сайта, код html можно скопировать и просто вставить в Ваши веб-страницы при цитировании материалов нашего веб-сайта. Материал носит неофициальный характер и приведен для ознакомления.