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

Object

Object это примитивный тип объекта JavaScript. Все объекты JavaScript являются потомками Object. То есть все объекты JavaScript имеют методы, определённые для Object.

Объект ядра

Реализован в

JavaScript 1.0: метод toString.

JavaScript 1.1, NES 2.0: добавлены методы eval и valueOf; свойство constructor.

JavaScript 1.2: не рекомендуется использовать метод eval.

JavaScript 1.3: добавлен метод toSource

Версия ECMA

ECMA-262

Создание

Конструктор объекта Object:

new Object()

Параметры

Отсутствуют.

Свойства. Резюме.

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

Специфицирует функцию, которая создаёт прототип объекта.

prototype

Позволяет добавлять свойства во все объекты.

Методы. Резюме.

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

Не рекомендуется. Вычисляет строку кода JavaScript в контексте специфицированного объекта.

toSource

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

toString

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

unwatch

Удаляет точку наблюдения/watchpoint из свойства объекта.

valueOf

Возвращает примитивное значение специфицированного объекта.

watch

Добавляет точку наблюдения/watchpoint в свойство объекта.

constructor


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

Свойство из

Object

Реализовано в

JavaScript 1.1, NES 2.0

Версия ECMA

ECMA-262

Описание

Все объекты наследуют свойство constructor из их prototype:

o = new Object  // или o = {} в JavaScript 1.2
o.constructor == Object
a = new Array // или a = [] в JavaScript 1.2
a.constructor == Array
n = new Number(3)
n.constructor == Number

Хотя Вы и не можете конструировать большинство объектов HTML, Вы можете делать сравнения. Например,

document.constructor == Document
document.form3.constructor == Form

Примеры

Создаётся прототип Tree и объект этого типа - theTree. Затем выводится свойство constructor объекта theTree.

function Tree(name) {
   this.name=name
}
theTree = new Tree("Redwood")
document.writeln("<B>theTree.constructor is</B> " +
   theTree.constructor + "<P>")

На выходе будет:

theTree.constructor is function Tree(name) { this.name = name; }

eval


Не рекомендуется. Вычисляет строку кода JavaScript в контексте специфицированного объект.

Метод из

Object

Реализован в

JavaScript 1.1, NES 2.0

JavaScript 1.2, NES 3.0: не рекомендуется как метод объектов; оставлен как функция верхнего уровня/top-level function.

Синтаксис

eval(string)

Параметры

string

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

Описание

eval как метод объекта Object и каждого объекта, происходящего от Object, не рекомендуется применять. Используйте функцию верхнего уровня eval.

Обратная Совместимость

JavaScript 1.1. eval это метод объекта Object и каждого объекта, происходящего от Object.

См. также

eval

prototype


Представляет прототип для данного класса. Вы можете использовать prototype для добавления свойств или методов во все экземпляры класса. См. дополнительно Function.prototype.

Свойство из

Object

Реализовано в

JavaScript 1.1

Версия ECMA

ECMA-262

toSource


Возвращает строку, представляющую исходный код объекта.

Метод из

Object

Реализован в

JavaScript 1.3

Синтаксис

toSource()

Параметры

Отсутствуют.

Описание

Метод toSource возвращает следующие значения:

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

Примеры

Определяется тип объектов Dog и создаётся theDog, объект типа Dog:

function Dog(name,breed,color,sex) {
   this.name=name
   this.breed=breed
   this.color=color
   this.sex=sex
}
theDog = new Dog("Gabby","Lab","chocolate","girl")

Вызов метода toSource объекта theDog выводит исходный код JavaScript, определяющий этот объект:

theDog.toSource()
//возвращает "{name:"Gabby", breed:"Lab", color:"chocolate", sex:"girl"}

См. также

Object.toString

toString


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

Метод из

Object

Реализован в

JavaScript 1.0

Версия ECMA

ECMA-262

Синтаксис

toString()

Безопасность

JavaScript 1.1: Этот метод разрушен по умолчанию для следующих объектов: Button, Checkbox, FileUpload, Hidden, History, Link, Location, Password, Radio, Reset, Select, Submit, Text и Textarea. О разрушении данных см. книгу Клиентский JavaScript. Руководство.

Описание

Каждый объект имеет метод toString, который автоматически вызывается, если объект представляется как текстовое значение или если на объект ссылаются при конкатенации строк. Например, следующие примеры требуют, чтобы theDog был представлен как строка:

document.write(theDog)
document.write("The dog is " + theDog)

По умолчанию метод toString наследуется каждым объектом - потомком объекта Object. Вы можете переопределить этот метод для создаваемых Вами специальных объектов. Если Вы не переопределяете toString в специальном объекте, toString возвращает [object type], где type  это тип объекта или имя функции-конструктора, которая создаёт объект.

Например:

var o = new Object()
o.toString // возвращает [object Object]

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

Некоторые встроенные объекты серверного и клиентского JavaScript не переопределяют метод toString объекта Object. Например, для Image-объекта sealife, определённого ниже, sealife.toString() возвратит [object Image].

<IMG NAME="sealife" SRC="images\seaotter.gif" ALIGN="left" VSPACE="10">

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

Следующий код определяет тип объектов Dog и создаёт theDog, объект типа Dog:

function Dog(name,breed,color,sex) {
   this.name=name
   this.breed=breed
   this.color=color
   this.sex=sex
}
theDog = new Dog("Gabby","Lab","chocolate","girl")

Если Вы вызываете метод toString в этом специальном объекте, он возвращает значение по умолчанию, унаследованное от Object:

theDog.toString() //возвращает [object Object]

Следующий код создаёт функцию dogToString, которая будет использована для переопределения метода toString по умолчанию. Эта функция генерирует строку, содержащую каждое свойство, в форме "property = value;".

function dogToString() {
   var ret = "Dog " + this.name + " is [\n"
   for (var prop in this)
      ret += " " + prop + " is " + this[prop] + ";\n"
   return ret + "]"
}

Следующий код присваивает определённую пользователем функцию методу toString объекта:

Dog.prototype.toString = dogToString

После этого в любое время, когда theDog используется в строковом контексте, JavaScript автоматически вызывает функцию dogToString, которая возвращает следующую строку:

Dog Gabby is [
  name is Gabby;
  breed is Lab;
  color is chocolate;
  sex is girl;
]

Метод toString объекта обычно вызывается JavaScript, но Вы можете и сами вызвать его:

var dogString = theDog.toString()

Обратная Совместимость

JavaScript 1.2. Поведение метода toString зависит от того, специфицирован ли атрибут LANGUAGE="JavaScript1.2" в тэге <SCRIPT>:

Примеры

Пример 1: Объект location. Печатается строковой эквивалент текущего location.

document.write("location.toString() is " + location.toString() + "<BR>")

Вывод будет таким:

location.toString() is file:///C|/TEMP/myprog.html

Пример 2: Объект без строкового значения. Предположим, у Вас имеется Image-объект sealife, определённый так:

<IMG NAME="sealife" SRC="images\seaotter.gif" ALIGN="left" VSPACE="10">

Поскольку сам по себе Image-объект не имеет специального метода toString, sealife.toString() возвращает:

[object Image]

Пример 3: Параметр radix. Печатается строковые эквиваленты чисел от 0 до 9 в 10-ричном и двоичном формате.

for (x = 0; x < 10; x++) {
   document.write("Decimal: ", x.toString(10), " Binary: ", x.toString(2), "<BR>")
}

Этот пример даст на выходе:

Decimal: 0 Binary: 0
Decimal: 1 Binary: 1
Decimal: 2 Binary: 10
Decimal: 3 Binary: 11
Decimal: 4 Binary: 100
Decimal: 5 Binary: 101
Decimal: 6 Binary: 110
Decimal: 7 Binary: 111
Decimal: 8 Binary: 1000
Decimal: 9 Binary: 1001

См. также

Object.toSource, Object.valueOf

unwatch


Удаляет точку наблюдения, установленную методом watch.

Метод из

Object

Реализован в

JavaScript 1.2, NES 3.0

Синтаксис

unwatch(prop)

Параметры

prop

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

Описание

Отладчик JavaScript имеет функциональность, похожую на функциональность, предоставляемую этим методом, а также другие опции отладки. Об отладчике см. Getting Started with Netscape JavaScript Debugger.

По умолчанию этот метод наследуется каждым объектом - потомком объекта Object.

Пример

См. watch.

valueOf


Возвращает примитивное значение специфицированного объекта.

Метод из

Object

Реализован в

JavaScript 1.1

Версия ECMA

ECMA-262

Синтаксис

valueOf()

Параметры

Отсутствуют.

Описание

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

По умолчанию метод valueOf наследуется каждым объектом - потомком объекта Object. Каждый встроенный объект ядра языка переопределяет этот метод, чтобы возвращать соответствующее значение. Если объект не имеет примитивного значения, valueOf возвращает сам объект, который выводится так:

[object Object]

Вы можете также использовать valueOf в Вашем коде для конвертации встроенного объекта в примитивное значение. Если Вы создаёте специальный объект, Вы можете переопределить Object.valueOf для вызова специального метода вместо метода по умолчанию объекта Object .

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

Предположим, у вас есть тип объектов myNumberType и Вы хотите создать метод valueOf для него. Следующий код присваивает определённую пользователем функцию методу valueOf объекта:

myNumberType.prototype.valueOf = new Function(functionText)

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

Метод valueOf объекта обычно вызывается JavaScript, но вы и сами может вызвать его:

myNumber.valueOf()

ПРИМЕЧАНИЕ: Объекты в строковом контексте конвертируются с помощью метода toString, который отличается от конвертирования  String-объектов в строковые примитивы с использованием метода valueOf. Все строковые объекты имеют строковую конверсию, если только "[object type]". Но многие объекты не конвертируются в number, boolean или function.

См. также

parseInt, Object.toString

watch


Наблюдает за свойством, которому присвоено значение, и запускает функцию если это значение появляется.

Метод из

Object

Реализован в

JavaScript 1.2, NES 3.0

Синтаксис

watch(prop, handler)

Параметры

prop

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

handler

Вызываемая функция.

Описание

Наблюдает за свойством по имени prop в данном объекте, вызывая handler(prop, oldval, newval), когда prop устанавливается и сохраняет return-значение в этом свойстве. Метод watchpoint может фильтровать (или обнулять) значение, возвращая модифицированное newval (или oldval).

Если Вы удалили свойство, для которого watchpoint был установлен, это watchpoint не исчезает. Если Вы позднее воссоздаёте свойство, watchpoint всё ещё продолжает действовать.

Чтобы удалить watchpoint, используйте метод unwatch. По умолчанию метод watch наследуется каждым объектом - потомком объекта Object.

Отладчик JavaScript имеет функциональность, похожую на функциональность, предоставляемую этим методом, а также другие опции отладки. Об отладчике см. Getting Started with Netscape JavaScript Debugger.

Пример

<script language="JavaScript1.2">
o = {p:1}
o.watch("p",
   function (id,oldval,newval) {
      document.writeln("o." + id + " changed from "
         + oldval + " to " + newval)
      return newval
   })
o.p = 2
o.p = 3
delete o.p
o.p = 4
o.unwatch('p')
o.p = 5
</script>

Этот скрипт даст на выходе:

o.p changed from 1 to 2
o.p changed from 2 to 3
o.p changed from 3 to 4

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

Дата последнего обновления: 28 мая 1999 года.
Copyright (c) 1999 Netscape Communications Corporation

Hosted by uCoz