Назад    Вперёд

Ядро JavaScript 1.5. Справочник.


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.

JavaScript 1.4: удалён метод eval.

Версия ECMA

ECMA-262


Создание

Object-конструктор:

 

new Object()


Параметры

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


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

 

Свойство

Описание

constructor

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

prototype

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


 

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

 

Метод

Описание

eval

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

toSource

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

toString

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

unwatch

Удаляет контрольную точку для свойства объекта.

valueOf

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

watch

Добавляет контрольную точку для свойства объекта.

 

 

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: не рекомендуется как метод объектов; остаётся как функция верхнего уровня.

JavaScript 1.4: удалён как метод объектов.


Синтаксис
eval(string)


Параметр

string

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


Описание

Метод eval больше не доступен как метод из Object. Используется функция верхнего уровня eval.


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

JavaScript 1.2 и 1.3.

eval как метод из Object и каждого объекта, полученного из Object, не рекомендуется к использованию (но имеется).

 

JavaScript 1.1.

eval является методом из Object и каждого объекта, полученного из Object.


См. также

eval.

 


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()


Описание

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

 

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

 

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

Например:

 

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

 

Встроенные методы toString.

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

 

Переопределение метода 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, он возвращает значение по умолчанию, унаследованное из 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() это " + location.toString() + "<BR>")

 

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

 

location.toString() это file:///C|/TEMP/myprog.htmll

 

Пример 2:

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

 

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

 

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

 

[object Image]

 

Пример 3:

Параметр radix. Этот код печатает строковые эквиваленты чисел от 0 до 9 в десятичном и двоичном виде.

 

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]". Но многие объекты не конвертируются в число, boolean или функцию.


См. также

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).

 

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

 

Чтобы удалить контрольную точку, используйте метод 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

 

 

Назад    Вперёд

Copyright © 2000 Netscape Communications Corp. Все права зарезервированы.

Дата последнего обновления: 28 сентября 2000 г.

Hosted by uCoz