Оператор instanceof
Обновлен: Ноябрь 2007
Возвращает логическое значение, указывающее, является ли объект экземпляром определенного класса или созданной функции.
object instanceof class
Аргументы
object
Обязательный. Любое выражение объекта.class
Обязательный. Любой класс объекта или созданная функция.
Заметки
Оператор instanceof возвращает значение true, если аргумент object является экземпляром class или созданной функции. Если object не является экземпляром указанного класса или функции или в качестве аргумента object передается значение null, оператор возвращает значение false.
В JScript объект Object имеет особое значение. Объект считается экземпляром Object в том и только в том случае, ели он был создан с помощью конструктора Object.
Пример 1
В следующем примере демонстрируется использование оператора instanceof для проверки типа переменной.
// This program uses System.DateTime, which must be imported.
import System
function isDate(ob) : String {
if (ob instanceof Date)
return "It's a JScript Date"
if (ob instanceof DateTime)
return "It's a .NET Framework Date"
return "It's not a date"
}
var d1 : DateTime = DateTime.Now
var d2 : Date = new Date
print(isDate(d1))
print(isDate(d2))
В результате выполнения данного кода выводятся следующие данные:
It's a .NET Date
It's a JScript Date
Пример 2
В следующем примере демонстрируется использование оператора instanceof для проверки экземпляров созданной функции.
function square(x : int) : int {
return x*x
}
function bracket(s : String) : String{
return("[" + s + "]");
}
var f = new square
print(f instanceof square)
print(f instanceof bracket)
В результате выполнения данного кода выводятся следующие данные:
true
false
Пример 3
В следующем примере демонстрируется, как оператор instanceof проверяет, являются ли объекты экземплярами объекта Object.
class CDerived extends Object {
var x : double;
}
var f : CDerived = new CDerived;
var ob : Object = f;
print(ob instanceof Object);
ob = new Object;
print(ob instanceof Object);
В результате выполнения данного кода выводятся следующие данные:
false
true