March 3, 2001 - Finding the Object's Superclass
March 3, 2001 Finding the Object's Superclass Tips: March 2001
Yehuda Shiran, Ph.D.
|
instanceOf()
. JavaScript does not support the instanceOf()
method, but we can write one ourselves, using the internal __proto__
(two underscores on each side) property. The algorithm is based on searching the object's constructor along the inheritance chain, using __proto__
:
function instanceOf(object, constructorFunction) {
while (object != null) {
if (object == constructorFunction.prototyp) {return true}
object = object.__proto__;
}
return false;
}
The following code segment defines three classes: State
, City
, and Street
. The Street
's prototype is City
, and the City
's prototype is State
. If UniversityAvenue
is an instance of Street
, it is also an instance of City
and State
. This demo (Netscape only) proves it by showing all the above instanceOf()
relationships to be true:
<SCRIPT LANGUAGE="JavaScript">
<!--
function instanceOf(object, constructorFunction) {
while (object != null) {
if (object == constructorFunction.prototype) {return true}
object = object.__proto__;
}
return false;
}
function State() {
}
function City() {
}
City.prototype = new State;
function Street() {
}
Street.prototype = new City;
var UniversityAvenue = new Street();
function demo() {
alert("instanceOf(UniversityAvenue, Street) is " + instanceOf(UniversityAvenue, Street));
alert("instanceOf(UniversityAvenue, City) is " + instanceOf(UniversityAvenue, City));
alert("instanceOf(UniversityAvenue, State) is " + instanceOf(UniversityAvenue, State));
}
// -->
</SCRIPT>