Назад Вперёд |
Ядро JavaScript 1.5. Справочник. |
В JavaScript имеются операции присваивания, сравнения, арифметические, битовые, логические, строковые и специальные. В этой главе описаны операции и содержится информация о приоритете операций.
В следующей таблице содержится резюме по операциям JavaScript.
Категория Операции |
Операция |
Описание |
---|---|---|
+ | ||
++ | (Инкремент/Увеличение) добавляет единицу к переменной, представляющей число (возвращая новое или старое значение переменной). |
|
- |
(Унарное отрицание, вычитание) Как унарная операция выполняет отрицание аргумента. Как бинарная операция, выполняет вычитание 2 чисел. | |
-- | (Декремент/Уменьшение) Вычитает единицу из переменной, представляющей число (возвращает новое или старое значение переменной). | |
* | ||
/ | ||
% | (Модулус) Вычисляет целочисленный остаток от деления двух чисел. | |
Конкатенация двух строк и присвоение результата первому операнду. | ||
(Логическое И) Возвращает первый операнд, если он может быть конвертирован в false; иначе, возвращает второй операнд. Таким образом, при использовании с Boolean-значениями, && возвращает true, если оба операнда true; иначе, возвращает false. |
||
(Логическое ИЛИ) Возвращает первый операнд, если он может быть конвертирован в true; иначе, возвращает второй операнд. Таким образом, при использовании с Boolean-значениями, || возвращает true, если один из операндов true; если оба false, возвращает false. | ||
(Логическое НЕТ) Возвращает false, если его единственный операнд может быть конвертирован в true; иначе, возвращает true. | ||
& |
(Побитовое И) Возвращает 1 в битовой позиции, если биты обоих операндов являются единицами. |
|
^ |
(Побитовое исключающее ИЛИ) Возвращает 1 в битовой позиции, если бит одного, но не обоих операндов являются единицами. | |
| |
(Побитовое ИЛИ) Возвращает 1 в битовой позиции, если бит любого операнда равен 1. | |
~ |
||
<< |
(Сдвиг влево) Сдвигает первый операнд в битовом представлении влево на количество битов, специфицированное вторым операндом, заполняя слева. | |
>> | (Сдвиг вправо с сохранением знака) Сдвигает первый операнд в битовом представлении вправо на количество битов, специфицированное вторым операндом, отбрасывая смещённые биты. | |
>>> | (Сдвиг вправо с заполнением нулями) Сдвигает первый операнд в битовом представлении вправо на количество битов, специфицированное вторым операндом, отбрасывая смещённые биты и заполняя слева нулями. | |
= | ||
+= |
Складывает два числа и присваивает результат первому операнду. | |
-= | Вычитает одно число из другого и присваивает результат первому операнду. |
|
*= |
Перемножает два числа и присваивает результат первому операнду. | |
/= | Делит одно число на другое и присваивает результат первому операнду. |
|
%= |
Вычисляет целочисленный результат от деления двух чисел и присваивает результат первому операнду. |
|
&= |
Выполняет побитовое И и присваивает результат первому операнду. | |
^= | Выполняет побитовое исключающее ИЛИ и присваивает результат первому операнду. | |
|= | Выполняет побитовое ИЛИ и присваивает результат первому операнду. | |
<<= | Выполняет сдвиг влево и присваивает результат первому операнду. | |
>>= | Выполняет сдвиг вправо с сохранением знака и присваивает результат первому операнду. | |
>>>= | Выполняет сдвиг вправо с заполнением нулями и присваивает результат первому операнду. | |
Возвращает true, если операнды не равны и/или не одного типа. | ||
Возвращает true, если левый операнд больше правого операнда. |
||
Возвращает true, если левый операнд больше или равен правому операнду. | ||
Возвращает true, если левый операнд меньше правого операнда. | ||
Возвращает true, если левый операнд меньше или равен правому операнду. | ||
? | ||
, | ||
delete | Удаляет объект, свойство объекта или элемент по специфицированному индексу в массиве. | |
function | ||
in | Возвращает true, если специфицированное свойство имеется в специфицированном объекте. | |
instanceo | Возвращает true, если специфицированный объект имеет специфицированный тип объекта. | |
new | Создаёт экземпляр определённого пользователем типа объекта или одного из встроенных типов объекта. | |
this |
Ключевое слово, используемое для обращения к текущему объекту. |
|
typeof |
||
void |
Специфицирует выражение, вычисляемое без возвращения значения. |
Операция присвоения присваивает левому операнду значение правого операнда.
Базовая операция присвоения - знак равенства (=), который присваивает левому операнду значение правого операнда. То есть, x = y присваивает значение y значению x. Другие операции присвоения являются обычно сокращениями стандартных операций, как показано в таблице.
В нестандартных ситуациях операция присвоения не имеет идентичного значения из колонки Значение из Таблицы 5.2. Если левый операнд операции присвоения сам содержит операцию присвоения, левый операнд вычисляется только однократно. Например:
a[i++] += 5 //i вычисляется только один раз
a[i++] = a[i++] + 5 //i вычисляется дважды
Операция сравнения сравнивает свои операнды и возвращает логическое значение, базируясь на верности /true сравнения.
JavaScript 1.3: добавлены операции === и !==
JavaScript 1.4: == не рекомендуется для сравнения двух объектов | |
ECMA-262 содержит все операции сравнения, кроме === и
!== |
Операнды могут иметь числовое или строковое значение. Строки сравниваются на базе стандартного лексикографического упорядочивания с использованием значений Unicode.
Boolean-значение возвращается как результат сравнения:
NaN
не равно ничему, включая NaN
. Положительные и отрицательные нули
равны.Object
.Null
и Undefined являются == (но не ===).
В следующей таблице даны операции сравнения.
Операция | Описание |
Примеры, возвращающие true1 |
---|---|---|
Возвращает true, если операнды равны. Если два операнда имеют разные типы, JavaScript пытается конвертировать операнды к одному типу для сравнения. |
3 == var1 | |
Возвращает true, если операнды не равны. Если два операнда имеют разные типы, JavaScript пытается конвертировать операнды к одному типу для сравнения. |
var1 != 4 | |
Возвращает true, если операнды равны и одного типа. | 3 === var1 |
|
var1 !== "3" | ||
Возвращает true, если левый операнд больше, чем правый операнд. | var2 > var1 |
|
Возвращает true, если левый операнд больше чем или равен правому операнду. |
var2 >= var1 | |
Возвращает true, если левый операнд меньше, чем правый операнд. |
var1 < var2 | |
Возвращает true, если левый операнд меньше чем или равен правому операнду. |
var1 <= var2 |
1 В этих примерах предполагается, что переменной |
Стандартные операции сравнения (== и !=) сравнивают два операнда, независимо от их типа.
Операции строгого равенства (=== и !==) выполняют сравнение равенства операндов
одного типа. Используйте операции строгого равенства, если операнды обязаны
быть специфического типа и значения или если важен точный тип операндов. Иначе,
используйте стандартные операции равенства, которые позволяют проверить идентичность двух операндов, даже если они имеют разные типы.
Если
нужна конверсия типа, JavaScript конвертирует операнды типов String
, Number
, Boolean
или Object
таким образом:
Number
. Сначала математическое значение получается из строкового числового литерала.
Затем это значение округляется до ближайшего значения типа Number
.Boolean
, он конвертируется в 1, если он true, и в +0, если он false.Операции пытаются конвертировать объект в примитивное значение, String
или Number
, используя методы valueOf
и toString
объекта. Если эта попытка конвертации не удаётся, генерируется ошибка времени
выполнения.
Вы не можете использовать стандартную операцию равенства (==)
для сравнения экземпляров JSObject
.
Для таких сравнений используйте метод JSObject.equals
.
Поведение стандартных операций равенства (== и !=) зависит от версии JavaScript.
Можно использовать
стандартную операцию равенства (==) или JSObject.equals
для сравнения
экземпляров JSObject
.
Стандартные операции равенства (== и !=) не выполняют конверсию типов перед выполнением сравнения. Операции строгого равенства (=== и !==) недоступны.
Стандартные операции равенства (== и !=) выполняют конверсию типов до выполнения сравнения.
Операции строгого равенства (=== и !==) недоступны.
Арифметические операции принимают числовые значения (литералы или переменные) в качестве операндов и возвращают одно числовое значение. Стандартными арифметическими операциями являются сложение (+), вычитание (-), умножение (*) и деление (/).
Эти операции работают так же, как и в большинстве других языков программирования, за исключением того, что операция / возвращает в JavaScript частное с плавающей точкой, а не целочисленный результат деления, как в языках C и Java. Например:
1/2 //возвращает 0.5 в JavaScript
1/2 //возвращает
0
в Java
Модулус-операция используется так:
Возвращает целочисленный остаток от деления первого операнда на второй, то
есть, var1 modulo var2
, в вышеуказанной операции , где var1
и var2
это переменные.
Функция modulo
даёт целочисленный остаток от деления var1
на var2
. Например, 100 %
3 возвращает 1.
Операция инкремента используется так:
Выполняет инкремент (добавляет единицу) своего операнда и возвращает значение. Если используется как постфикс, операция после операнда (например, x++), затем возвращает значение, бывшее до инкремента. Если используется как префикс, операция
перед операндом (например, ++x), тогда возвращает, после выполнения инкремента, новое значение.
Например, если x равен 3, тогда операция y = x++ устанавливает y в 3 и увеличивает x до 4. Если x равен 3, то операция y = ++x выполняет инкремент x до 4 и устанавливает y в 4.
Операция декремента используется так:
Выполняет декремент (вычитает единицу) своего операнда и возвращает значение. Если используется как постфикс
(например, x--), то возвращает значение, бывшее до выполнения декремента.
Если используется как префикс (например, --x), тогда возвращает, после выполнения декремента, новое значение.
Например, если x равен 3, то операция y = x-- устанавливает y в 3 и выполняет декремент x до 2. Если x равен 3, то операция y = --x выполняет декремент x до 2 и устанавливает y в 2.
Операция унарного отрицания ставится перед операндом и выполняет его отрицание. Например, y = -x меняет знак (отрицает) значения x и присваивает это значение переменной y; то есть, если x = 3, y может получить значение -3, а x останется в значении 3.
Побитовые операции рассматривают свои операнды как наборы 32-битных значений (нулей и единиц), а не как десятеричные, 16-ричные или 8-ричные числа. Например, десятеричное число 9 имеет двоичное представление 1001. Побитовые операции выполняют свои операции с такими двоичными представлениями, но возвращают стандартные числовые значения JavaScript.
В таблице дано резюме по битовым операциям JavaScript:
Концептуально логические побитовые операции работают так:
Например, 1001 это двоичное представление десятеричной цифры 9, а 1111 - цифры 15.
Итак, если побитовые операции применить к этим значениям, результаты будут такими:
Побитовые операции сдвига принимают два операнда: первый это сдвигаемое количество, а второй специфицирует количество битовых позиций, на которое сдвигается первый операнд. Направление операции сдвига управляется используемой операцией.
Операции сдвига конвертируют свои операнды до 32-битных чисел и возвращают результат того же типа, что и у левого операнда.
Сдвигает первый операнд на специфицированное количество битов влево. Излишние биты, сдвинутые влево, отбрасываются. Справа биты заполняются нулями.
Например, 9<<2 даёт 36, поскольку 1001 сдвигается на 2 бита влево и становится 100100, т.е. 36.
Сдвигает первый операнд на специфицированное количество битов вправо. Излишние биты, сдвинутые вправо, отбрасываются. Слева идёт заполнение копиями самого левого бита.
Например, 9>>2 даст 2, поскольку 1001, двинутое на 2 бита вправо, становится 10, т.е. 2. Аналогично, -9>>2 даст -3, поскольку знак сохраняется.
Сдвигает первый операнд на специфицированное количество битов вправо.
Излишние биты, сдвинутые вправо, отбрасываются. Слева биты заполняются нулями.
Например, 19>>>2 даёт 4, поскольку 10011, сдвинутое два раза вправо, становится 100, то есть 4. Для неотрицательных чисел сдвиг вправо с заполнением нулями и сдвиг вправо с сохранением знака дают тот же самый результат.
Логические операции обычно используются с Boolean (логическими) значениями; если они имеются, они возвращают Boolean/Булево значение. Однако операции && и || в действительности возвращают значение одного из специфицированных операндов, поэтому, если эти операции используются с не-Boolean значениями, они могут вернуть не-Boolean значение.
Логические операции описаны в следующей таблице.
Примерами выражений, которые могут быть конвертированы в false, являются
выражения, дающие при их вычислении null
, 0, пустую строку ("") или undefined
.
Хотя операции&& и || можно использовать с не-Boolean-значениями, их можно продолжать рассматривать как Boolean-операции, поскольку их return-значения всегда могут быть конвертированы в Boolean-значения.
Поскольку логические выражения вычисляются слева направо, они тестируются на возможность "укороченного/short-circuit" вычисления по следующим правилам:
Логические правила гарантируют, что эти вычисления всегда корректны. Обратите внимание, что часть что-либо не вычисляется, поэтому выполнение этого что-либо в качестве побочного эффекта никакого эффекта иметь не будет.
Операции && и || ведут себя так:
Вот примеры применения операции && (логическое И):
a1=true && true // t && t
возвращает true
a2=true && false // t && f
возвращает
false
a3=false && true // f && t
возвращает
false
a4=false && (3 == 4) // f && f
возвращает
false
a5="Cat" && "Dog" // t && t
возвращает
Dog
a6=false && "Cat" // f && t
возвращает
false
a7="Cat" && false // t && f
возвращает
false
А вот примеры применения операции || (логическое ИЛИ):
o1=true || true // t || t
возвращает
true
o2=false || true // f || t
возвращает
true
o3=true || false // t || f
возвращает
true
o4=false || (3 == 4) // f || f
возвращает
false
o5="Cat" || "Dog" // t || t
возвращает
Cat
o6=false || "Cat" // f || t
возвращает
Cat
o7="Cat" || false // t || f
возвращает
Cat
Примеры применения операции ! (логическое НЕ):
n1=!true // !t
возвращает
false
n2=!false // !f
возвращает
true
n3=!"Cat" // !t
возвращает
false
Помимо операций сравнения, которые можно использовать со сроками, операция (+) выполняет конкатенацию (объединение) двух строковых значений, возвращая строку, являющуюся результатом объединения двух строк-операндов. Например, "my " + "string" возвратит строку "my string".
Сокращённая операция присвоения += также может использоваться для конкатенации
строк. Например, если переменная mystring
имеет значение "alpha," то выражение mystring += "bet"
вычисляется в "alphabet", и это значение присваивается переменной mystring
.
Операция проверки условия является единственной операцией в JavaScript,
принимающей три операнда. Эта операция часто используется как сокращение вместо операции if
.
condition | |
expr1, expr2 |
Если condition равно true, операция возвращает значение выражения expr1
;
иначе - возвращает значение выражения expr2
.
Например, чтобы отобразить разные сообщения, в зависимости от значения
переменной isMember
, можно использовать такой оператор:
document.write ("The fee is " + (isMember ? "$2.00" : "$10.00"))
Операция "запятая" вычисляет оба операнда и возвращает значение второго операнда.
expr1, expr2 |
Вы можете использовать операцию "запятая", если хотите включить несколько выражений в том месте, где требуется
одно выражение. Наиболее обычное использование этой операции
- поддержка нескольких параметров в цикле for
.
Например, если a это 2-мерный массив с 10 элементами по измерению, то следующий код использует операцию "запятая" для инкремента двух переменных за один проход. Код печатает значения элементов по диагонали массива:
for (var i=0, j=9; i <= 9; i++, j--)
document.writeln("a["+i+","+j+"]= " + a[i,j])
Операция delete
удаляет объект, свойство объекта или элемент массива по специфицированному индексу.
delete objectName
delete objectName.property
delete objectName[index]
delete property // верно только внутри оператора with
objectName | |
property | |
index |
Четвёртая форма операции верна только внутри оператора with
при удалении свойства объекта.
Вы можете использовать операцию delete
для удаления переменных, объявленных неявно, но не переменных, объявленных оператором var
.
Если операция delete
выполнена успешно, она устанавливает свойство или элемент в undefined
. Операция delete
возвращает true, если операция возможна; возвращает false, если операция невозможна.
x=42
var y= 43
myobj=new Number()
myobj.h=4 // создаёт свойство h
delete x // возвращает true (может
удаляться, если объявлена неявно)
delete y //
возвращает false (не может удаляться, если объявлена с помощью var)
delete Math.PI // возвращает
false (предопределённые
свойства не могут удаляться)
code>возвращает
delete myobj.h //
true (свойства,
определённые пользователем, могут удаляться)
delete myobj //
возвращает
true (объекты
могут удаляться)
Если Вы удаляете элемент массива, размер массива не меняется. Например, если
удалить a[3]
, то a[4]
останется a[4]
, а a[3]
- undefined
.
Если операция
delete
удаляет элемент массива, этот элемент больше не присутствует в массиве. В
следующем примере trees[3]
удаляется с помощью delete
.
trees=new Array("redwood","bay","cedar","oak","maple")
delete trees[3]
if (3 in trees) {
// это не выполняется
}
Если Вы хотите, чтобы элемент массива существовал, но имел значение undefined
,
используйте ключевое слово undefined
вместо операции delete
.
В следующем примере элементу trees[3]
присваивается значение undefined
, и элемент массива продолжает существовать:
trees=new Array("redwood","bay","cedar","oak","maple")
trees[3]=undefined
if (3 in trees) {
//
это выполняется
}
Операция function
определяет анонимную функцию внутри выражения.
{var | const} variableName = function(parameters)
{functionBody};
Следующие примеры показывают использование операции function
.
Этот пример объявляет безымянную функцию внутри выражения. В
переменную x
устанавливается
функция, возвращающая квадрат аргумента:
var x = function(y) {return y*y};
Этот пример объявляет массив a как массив из трёх функций:
var a = [function(y) {return y}, function y {return y*y}, function (y)
[return y*y*y}];
Для этого массива, a[0](5)
возвращает 5, a[1](5)
возвращает 25,
a[2](5)
возвращает 125.
Операция in
возвращает true,
если специфицированное свойство имеется в специфицированном объекте.
propNameOrNumber in objectName
propNameOrNumber | Строка или числовое выражение, представляющее имя свойства или индекс массива. |
objectName |
Некоторые примеры использования операции in
:
// Массивы
trees=new Array("redwood","bay","cedar","oak","maple")
0 in trees // возвращает true
3 in trees //
возвращает
true
6 in trees //
возвращает
false
"bay" in trees // возвращает
false (Вы обязаны специфицировать номер индекса,
//
а не значение по этому индексу)
"length" in trees //возвращает
true (length это свойство Array)
// Предопределённые объекты
"PI" in Math //возвращает
true
myString=new String("coral")
"length" in myString //возвращает
true
// Специальные объекты
mycar = {make:"Honda",model:"Accord",year:1998}
"make" in mycar //возвращает
true
"model" in mycar //возвращает
true
Вы обязаны специфицировать объект справа от операции in
.
Например, Вы можете специфицировать строку, созданную конструктором String
,
но не можете специфицировать строковой литерал.
color1=new String("green")
"length" in color1 //возвращает
true
color2="coral"
"length" in color2 //генерирует ошибку (coral
это не String-объект)
in
с удалёнными или undefined
свойствами.Если Вы удаляете свойство операцией delete
, операция in
возвратит false для данного свойства.
mycar = {make:"Honda",model:"Accord",year:1998}
delete mycar.make
"make" in mycar //возвращает
false
trees=new Array("redwood","bay","cedar","oak","maple")
delete trees[3]
3 in trees //возвращает
false
Если Вы устанавливаете свойство в undefined
, но не удаляете его, операция
in
возвращает true для этого свойства.
mycar = {make:"Honda",model:"Accord",year:1998}
mycar.make=undefined
"make" in mycar //возвращает
true
trees=new Array("redwood","bay","cedar","oak","maple")
trees[3]=undefined
3 in trees //возвращает
true
Об использовании операции in
с удалёнными элементами массива см. delete
.
Операция instanceof
возвращает true, если специфицированный объект имеет специфицированный тип.
objectName instanceof objectType
objectName | |
objectType |
Используйте instanceof
,
если необходимо подтвердить тип объекта на этапе прогона. Например, при отлове
исключений Вы можете выполнять ветвление по различным вариантам кода, в зависимости от типа вызываемого исключения.
Вы обязаны специфицировать объект справа от операции
instanceof
.
Например, Вы можете специфицировать строку, созданную с помощью конструктора String
,
но не можете специфицировать строковой литерал.
color1=new String("green")
color1 instanceof String //возвращает
true
color2="coral"
color2 instanceof String //
возвращает
false (
coral
не является String-объектом)
См. также примеры для throw
.
В этом коде instanceof
используется для определения, является ли theDay Date
-объектом. Поскольку theDay
является Date
-объектом, операторы в операторе if
выполняются.
theDay=new Date(1995, 12, 17)
if (theDay instanceof Date) {
// выполняемые операторы
}
В этом коде instanceof
используется для демонстрации того, что объекты String
и Date
имеют также тип Object
(они получены из Object
).
myString=new String()
myDate=new Date()
myString instanceof String // возвращает true
myString instanceof Object //возвращает
true
myString instanceof Date //возвращает
false
myDate instanceof Date //
возвращает
true
myDate instanceof Object //возвращает
true
myDate instanceof String //возвращает
false
В это коде создаётся тип объектов Car
и экземпляр этого типа объектов, mycar
.
Операция instanceof
демонстрирует, что объект mycar
имеет тип Car
и тип
Object
.
function Car(make, model, year) {
this.make = make
this.model = model
this.year = year
}
mycar = new Car("Honda", "Accord", 1998)
a=mycar instanceof Car // возвращает true
b=mycar instanceof Object //
возвращает
true
Операция new создаёт экземпляр определяемого пользователем типа объекта или встроенного типа объекта, имеющий конструктор функции.
objectName = new objectType (param1 [,param2] ...[,paramN])
objectName | |
objectType | Тип объекта. обязан быть функцией, определяющей тип объекта. |
param1...paramN |
Значения свойств объекта. эти свойства являются параметрами, определёнными для функции |
Создание определяемого пользователем типа объектов проходит в два шага:
new
.Чтобы определить тип объекта, создайте функцию для этого типа объекта, которая специфицирует его имя, свойства и методы. Объект может иметь свойство, которое само является объектом. См. далее примеры.
Вы всегда можете добавить свойство к ранее определённому объекту. Например,
оператор car1.color = "black"
добавляет свойство color
в car1
и присваивает ему значение "black". Однако это не влияет на другие объекты. Чтобы добавить свойство ко всем объектам
того же типа, Вы обязаны добавить свойство в определение типа объекта car
.
Вы можете добавить свойство к ранее определённому объекту
путём использования свойства Function.prototype
.
Оно определяет свойство, которое используется совместно всеми объектами,
созданными данной функцией, а не только отдельным экземпляром этого типа объекта.
Следующий код добавляет свойство color
всем объектам типа car
,
а затем присваивает значение свойству color
объекта car1
.
Дополнительно см. prototype
.
Car.prototype.color=null
car1.color="black"
birthday.description="The day you were born"
Тип объекта и экземпляр объекта. Предположим, Вы хотите создать
тип объекта для автомобилей. Вы хотите назвать это тип car
и Вы хотите, чтобы он имел свойства make
, model
и year
. Для выполнения этого
Вы можете написать следующую функцию:
function car(make, model, year) {
this.make = make
this.model = model
this.year = year
}
Теперь Вы можете создать объект под названием mycar
таким образом:
mycar = new car("Eagle", "Talon TSi", 1993)
Этот оператор создаёт mycar
и присваивает его свойствам специфицированные значения. Теперь значением mycar.make
является строка "Eagle", а mycar.year
- это целое число 1993, и так далее.
Вы можете создать любое количество объектов типа car
через вызов new
. Например:
kenscar = new car("Nissan", "300ZX", 1992)
Свойство объекта, которое само является объектом. Предположим, Вы определяете объект под названием person
:
function person(name, age, sex) {
this.name = name
this.age = age
this.sex = sex
}
и создаёте два экземпляра person
-объектов:
rand = new person("Rand McNally", 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
в качестве параметров для owners
. Чтобы найти имя владельца машины car2
,
Вы можете получить доступ к свойству:
Это ключевое слово ссылается на текущий объект. Вообще, в методе this
ссылается на вызывающий объект.
Предположим, функция под названием validate
проверяет значение свойства объекта и верхнее и нижнее значения:
function validate(obj, lowval, hival) {
if ((obj.value < lowval) || (obj.value > hival))
alert("Invalid Value!")
}
Вы можете вызвать validate
в обработчике события onChange
в каждом элементе формы, используя this
для передачи е1
(функции) элемента формы, как в следующем примере:
<B>Enter a number between 18 and 99:</B>
<INPUT TYPE = "text" NAME = "age" SIZE = 3
onChange="validate(this, 18, 99)">
Операция typeof
используется одним из следующих способов:
1. typeof operand
2. typeof (operand)
Операция typeof
возвращает строку, указывающую тип невычисленного операнда.
operand
это строка, переменная, ключевое слово или объект, тип которого возвращается. Скобки не
обязательны.
Предположим, Вы определили следующие переменные:
var myFun = new Function("5+2")
var shape="round"
var size=1
var today=new Date()
Операция typeof
возвращает для этих переменных следующие результаты:
typeof myFun is object
typeof shape is string
typeof size is number
typeof today is object
typeof dontExist is undefined
Для ключевых слов true
и null
операция typeof
возвращает:
typeof true is boolean
typeof null is object
Для чисел или строк операция typeof
возвращает:
typeof 62 is number
typeof 'Hello world' is string
Для значений свойств операция typeof
возвращает тип значения, содержащегося в свойстве:
typeof document.lastModified is string
typeof window.length is number
typeof Math.LN2 is number
Для методов и функций операция typeof
возвращает:
typeof blur is function
typeof eval is function
typeof parseInt is function
typeof shape.split is function
Для предопределённых объектов операция typeof
возвращает:
typeof Date is function
typeof Function is function
typeof Math is function
typeof Option is function
typeof String is function
Операция void
используется одним из следующих способов:
1. void (expression)
2. void expression
Операция void
специфицирует выражение, вычисляемое без возвращения значения.
expression
это вычисляемое выражение JavaScript. Скобки не обязательны, но хорошим стилем является их наличие.
Вы можете использовать операцию void
для специфицирования выражения как гипертекстовой ссылки. Это выражение
вычисляется, но не загружается вместо текущего документа.
Следующий код создаёт гипертекстовую ссылку, которая ничего не выполняет, если
пользователь щёлкнет её. Если пользователь щёлкает ссылку, void(0)
вычисляется в 0, но в JavaScript это не вызывает действий.
<A HREF="javascript:void(0)">Click here to do nothing</A>
Следующий код создаёт гипертекстовую ссылку, которая отправляет форму, если пользователь щёлкнет её:
<A HREF="javascript:void(document.form.submit())">
Click here to submit</A>
Copyright © 2000
Дата последнего обновления: 28 сентября 2000 г.