[Содержание] [Предыдущая] [Следующая] [Индекс]

Object

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

Основной Объект
Реализовано в Navigator 2.0: метод toString
Navigator 3.0, LiveWire 1.0: добавлены методы eval и valueOf; свойство constructor
Navigator 4.0: удален метод eval

Создание

Конструктором Object:

new Object();

Параметры

Нет.

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

constructor
Определяет функцию, которая создает прототип объекта.
prototype
Позволяет добавлять свойства ко всем объектам.

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

eval
Оценивает строку кода JavaScript в контексте определенного объекта.
toString
Возвращает строку, представляющую определенный объект.
unwatch
Удаляет сигнальную точку из свойства объекта.
valueOf
Возвращает примитивное значение определенного объекта.
watch
Добавляет сигнальную точку к свойству объекта.

Свойства

constructor

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

Свойство объекта Object
Реализовано в Navigator 3.0, LiveWire 1.0

Описание

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

o = new Object  // или o = {} в Navigator 4.0
o.constructor == Object
a = new Array // или a = [] в Navigator 4.0
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("Красное дерево")
document.writeln("<B>theTree.constructor равен</B> " +
   theTree.constructor + "<P>")
Этот пример показывает следующий вывод:

theTree.constructor равен function Tree(name) { this.name = name; }

prototype

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

Свойство объекта Object
Реализовано в Navigator 3.0

Методы

eval

Оценивает строку кода JavaScript в контексте этого объекта.

Метод объекта Object
Реализовано в Navigator 3.0, LiveWire 1.0
Navigator 4.0, Netscape Server 3.0: удалено как метод объекта; сохранена как глобальная функция.

Синтаксис

eval(string)

Параметры

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

Описание

Параметр метода eval это строка. Если строка представляет выражение, eval оценивает выражение. Если параметр представляет одну или более инструкций JavaScript, eval выполняет инструкции. Не вызывайте eval чтобы выполнить арифметическое выражение; JavaScript выполняет арифметические выражения автоматически.

Если Вы создаете арифметическое выражение как строку, Вы можете использовать eval, чтобы выполнить его в более позднее время. Например, предположим, что Вы имеете переменную x. Вы можете откложить выполнение выражения, включающего x, присваивая строковое значение выражения "3 * x + 2", переменной, и затем вызывая eval в другом месте Вашего сценария.

eval является также глобальной функцией, не связанной ни с одним объектом.

ПРИМЕЧАНИЕ: В Navigator 2.0, eval был функцией верхнего уровня. В Navigator 3.0 eval был также методом каждого объекта. Стандарт ECMA-262 для JavaScript деланет eval доступной только как функцию верхнего уровня. По этой причине, в Navigator 4.0, eval является опять функцией верхнего уровня. В Navigator 4.02, obj.eval(str) эквивалентно в любом контексте with(obj)eval(str), за исключением конечно, что последняя инструкция, не выражение.

Примеры

Пример 1. Следующий пример создает breed как свойство объекта myDog, и также как переменную. Первое выражение write использует eval('breed') без определения объекта; строка "breed" оценивается без отношения к любому объекту, и метод write показывает "Пастух", которое является значением переменной breed. Второе выражение write использует myDog.eval('breed'), которое определяет объект myDog; строка "breed" оценивается относительно объекта myDog, и метод write показывает "Лаборатория", которое является значением свойства breed объекта myDog.

function Dog(name,breed,color) {
   this.name=name
   this.breed=breed
   this.color=color
}
myDog = new Dog("Gabby")
myDog.breed="Лаборатория"
var breed='Пастух'
document.write("<P>" + eval('breed'))
document.write("<BR>" + myDog.eval('breed'))
Пример 2. Следующий пример использует eval внутри функции, которая определяет тип объекта stone. Выражение flint = new stone("x=42") создает объект flint со свойствами x, y, z и z2. Выражения write показывают значения этих свойств, как 42, 43, 44 и 45, соответственно.

function stone(str) {
   this.eval("this."+str)
   this.eval("this.y=43")
   this.z=44
   this["z2"] = 45
}
flint = new stone("x=42")
document.write("<BR>flint.x равно " + flint.x)
document.write("<BR>flint.y равно " + flint.y)
document.write("<BR>flint.z равно " + flint.z)
document.write("<BR>flint.z2 равно " + flint.z2)

Смотрите также

eval

toString

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

Метод объекта Object
Реализовано в Navigator 2.0

Синтаксис

toString()
toString(radix)

Параметры

radix
(Факультативный) Целое число между 2 и 16, определяющее основание, для представления числовых значений.

Защита

Navigator 3.0: Этот метод заражен по умолчанию для следующих объектов:Button, Checkbox, FileUpload, Hidden, History, Link, Location, Password, Radio, Reset, Select, Submit, Text и Textarea.

Для информации о заражении данных, смотрите "Защита JavaScript".

Описание

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

document.write(theDog)
document.write("Собака " + theDog)
Вы можете использовать toString внутри Вашего собственного кода, чтобы преобразовать объект в строку, и Вы можете создать Вашу собственную функцию, которая будет вызвана вместо заданного по умолчанию метода toString.

Встроенные методы toString
Каждый тип объекта имеет встроенный метод toString, которые JavaScript вызывает всякий раз, когда требуется преобразовать объект в строку. Если объект не имеет никакого строкового значения и никакого определяемого пользователем метода toString, toString возвращает "[object type]", где type тип объекта или имя функции конструктора, которая создала объект. Например, если объект Image, названный sealife, определить как показано ниже, sealife.toString() возвратит [object Image].

<IMG NAME="sealife" SRC="images\seaotter.gif" ALIGN="left" VSPACE="10">
Некоторые встроенные классы имеют специальные определения для их методов toString. Смотрите описания этого метода для этих объектов:

Array, Boolean, Connection, database, DbPool, Function, Number
Определяемые пользователем методы 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","Лаборатория","шоколадный","девушка")
Следующий код создает функцию dogToString, которая будет использоваться вместо заданного по умолчаного метода toString. Эта функция генерирует строку, содержащую каждое свойство, в форме "свойство = значение;".

function dogToString() {
   var ret = "Dog " + this.name + " ["
   for (var prop in this)
      ret += " " + prop + " " + this[prop] + ";"
   return ret + "]"
}
Следующий код назначает определяемую пользователем функцию методу toString:

Dog.prototype.toString = dogToString
С предшествующим коде, theDog в любое время используется в строковом контексте, JavaScript автоматически вызывает функцию dogToString, которая возвращают следующую строку:

Dog Gabby [ name Gabby; breed Лаборатория; color шоколадный; sex девушка; toString is function dogToString() { var ret = "Object " + this.name + " ["; for (var prop in this) { ret += " " + prop + " " + this[prop] + ";"; } return ret + "]"; } ;]
Метод toString обычно вызывается JavaScript, но Вы можете вызвать его непосредственно следующим образом:

alert(theDog.toString())

Примеры

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

document.write("location.toString() равно " + location.toString() + "<BR>")
Вывод следующий:

location.toString() равно 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: Параметр основание системы счисления. Следующий пример печатает строковые эквиваленты чисел от 0 до 9 в десятичном и двоичном счислении.

for (x = 0; x < 10; x++) {
   document.write("Десятичное: ", x.toString(10), " Двоичное: ",
      x.toString(2), "<BR>")
}
Предшествующий пример производит следующий вывод:

Десятичное: 0 Двоичное: 0
Десятичное: 1 Двоичное: 1
Десятичное: 2 Двоичное: 10
Десятичное: 3 Двоичное: 11
Десятичное: 4 Двоичное: 100
Десятичное: 5 Двоичное: 101
Десятичное: 6 Двоичное: 110
Десятичное: 7 Двоичное: 111
Десятичное: 8 Двоичное: 1000
Десятичное: 9 Двоичное: 1001

Смотрите также

Object.valueOf

unwatch

Удаляет набор сигнальных точек метода watch.

Метод объекта Object
Реализовано в Navigator 4.0, Netscape Server 3.0

Синтаксис

unwatch(prop)

Параметры

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

Описание

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

Пример

Смотрите watch.

valueOf

Возвращает примитивное значение определенного объекта.

Метод объекта Object
Реализовано в Navigator 3.0

Синтаксис

valueOf()

Параметры

Нет.

Описание

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

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

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

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

Таблица 4.2 показывает типы объектов, для которых метод valueOf особенно полезен. Большинство других объектов не имеет никакого примитивного значения.

Таблица 4.2 Использование valueOf для типов этих объектов
Тип объекта Значение, возвращаемое valueOf
Number Примитивное числовое значение, связанное с объектом.
Boolean Примитивное булево значение, связанное с объектом.
String Строка, связанная с объектом.
Function Ссылка на функцию, связанную с объектом. Например, typeof funObj возвращает "object", но typeof funObj.valueOf() вовращает "function".

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

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

myNumberType.prototype.valueOf = new Function(functionText)
В предшествующем коде, в любое время объект типа myNumberType используется в контексте, где он должен представиться как примитивное значение, JavaScript автоматически вызывает функцию, определенную в предшествующем коде.

valueOf обычно вызывается JavaScript, но Вы можете вызвать его непосредственно следующим образом:

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

Смотрите также

parseInt, Object.toString

watch

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

Метод объекта Object
Реализовано в Navigator 4.0, Netscape Server 3.0

Синтаксис

watch(prop, handler)

Параметры

prop Имя свойства объекта.
handler Вызываемая функция.

Описание

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

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

Чтобы удалить сигнальную точку, используйте метод unwatch.

Отладчик 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 + " изменяется с "
         + oldval + " на " + newval)
      return newval
   })
o.p = 2
o.p = 3
delete o.p
o.p = 4
o.unwatch('p')
o.p = 5
</script>
Этот сценарий показывает следующее:

o.p изменяется с 1 на 2
o.p изменяется с 2 на 3
o.p изменяется с 3 на 4


[Содержание] [Предыдущая] [Следующая] [Индекс]

Последняя Модификация: 10/31/97 12:30:31


Права © 1997 Netscape Communications Corporation



Все мессаги сюда:yanich@inbox.ru
Hosted by uCoz