Object
является примитивом типа объекта JavaScript. Все объекты JavaScript наследуют Object
. Тоесть все объекты JavaScript имеют методы, определенные для объекта Object
.
Основной Объект | |
Реализовано в |
Navigator 2.0: метод toString Navigator 3.0, LiveWire 1.0: добавлены методы eval и valueOf ; свойство constructor Navigator 4.0: удален метод eval
|
Создание
Конструктором Object
:
| Определяет функцию, которая создает прототип объекта. |
| Позволяет добавлять свойства ко всем объектам. |
Свойства
constructor
Определяет функцию, которая создает прототип объекта. Обратите внимание, что значение этого свойства это ссылка непосредственно на функцию, не на строку, содержащащую имя функции.
Свойство объекта |
Object
|
Реализовано в | Navigator 3.0, LiveWire 1.0 |
Описание
Все объекты наследуют свойство constructor
и prototype
:
o = new Object // или o = {} в Navigator 4.0
Даже при том, что Вы не можете создавать большинство объектов HTML, Вы можете делать сравнения. Например,
o.constructor == Object
a = new Array // или a = [] в Navigator 4.0
a.constructor == Array
n = new Number(3)
n.constructor == Number
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
является также глобальной функцией, не связанной ни с одним объектом.
ПРИМЕЧАНИЕ: В Navigator 2.0,eval
был функцией верхнего уровня. В Navigator 3.0eval
был также методом каждого объекта. Стандарт ECMA-262 для JavaScript деланет eval доступной только как функцию верхнего уровня. По этой причине, в Navigator 4.0,eval
является опять функцией верхнего уровня. В Navigator 4.02,obj.eval(str)
эквивалентно в любом контекстеwith(obj)eval(str)
, за исключением конечно, что последняя инструкция, не выражение.
breed
как свойство объекта myDog
, и также как переменную. Первое выражение write
использует eval('breed')
без определения объекта; строка "breed"
оценивается без отношения к любому объекту, и метод write
показывает "Пастух"
, которое является значением переменной breed
. Второе выражение write
использует myDog.eval('breed')
, которое определяет объект myDog
; строка "breed"
оценивается относительно объекта myDog
, и метод write
показывает "Лаборатория"
, которое является значением свойства breed
объекта myDog
.
function Dog(name,breed,color) {
Пример 2. Следующий пример использует
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'))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.
valueOf
Возвращает примитивное значение определенного объекта.
Метод объекта |
Object
|
Реализовано в | Navigator 3.0 |
Синтаксис
valueOf()
Параметры
Нет.
Описание
Каждый объект имеет метод valueOf
, который автоматически вызывается, когда объект должен представиться как примитивное значение. Если объект не имеет никакого примитивного значения, valueOf
возвращает сам объект.
Таблица 4.2 показывает типы объектов, для которых метод valueOf
особенно полезен. Большинство других объектов не имеет никакого примитивного значения.
Таблица 4.2 Использование valueOf
для типов этих объектов
myNumberType.prototype.valueOf = new Function(functionText)
В предшествующем коде, в любое время объект типа myNumberType
используется в контексте, где он должен представиться как примитивное значение, JavaScript автоматически вызывает функцию, определенную в предшествующем коде.
valueOf
обычно вызывается JavaScript, но Вы можете вызвать его непосредственно следующим образом:
ПРИМЕЧАНИЕ: Объекты в строковых контекстах преобразовываются через метод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 = 4o.unwatch('p')
o.p = 5</script>
Этот сценарий показывает следующее:
o.p изменяется с 1 на 2
o.p изменяется с 2 на 3
o.p изменяется с 3 на 4
Последняя Модификация: 10/31/97 12:30:31
Все мессаги сюда:yanich@inbox.ru |