Junior
Mida kontrollib instanceof operaator JavaScriptis?
sobes.tech AI
Vastus AI-lt
JavaScripti instanceof operaator kontrollib, kas objekt on konkreetse klassi või konstruktori instants.
Tööpõhimõte:
instanceofkontrollib, kas konstruktoriprototypeon objekti prototüüpide ahelas.- Kui
prototypeon ahelas, on tulemustrue. - Kui mitte, on tulemus
false.
Näited:
// Klass defineerimine
class Animal {
// Konstruktor
constructor(name) {
this.name = name;
}
}
// Klassist instantsi loomine
let dog = new Animal("Buddy");
// Kontroll, kas dog on `Animal` instants
console.log(dog instanceof Animal); // true
// Kontroll, kas dog on `Object` instants (ahel kaudu)
console.log(dog instanceof Object); // true
// Kontroll, kas dog on `Array` instants (ei ole)
console.log(dog instanceof Array); // false
// Sisseehitatud tüüpide kontroll
let arr = [1, 2, 3];
console.log(arr instanceof Array); // true
console.log(arr instanceof Object); // true
let num = 123;
console.log(num instanceof Number); // false (primitiivsete väärtuste puhul)
// Uue objekti kaudu loodud
let numObj = new Number(123);
console.log(numObj instanceof Number); // true
Omadused:
instanceoftöötab prototüüpide ahelas, seega võib tulemus ollatrueka vanemate konstruktorite puhul.- Primitiivsete tüüpide (string, number, boolean, null, undefined, symbol, bigint) puhul tagastab
instanceoftavaliseltfalse, kui neid ei ole loodud vastava objekti kaudu (new String(),new Number()jne). - Võib olla ebatäpne erinevates JavaScripti kontekstides (näiteks erinevates brauseriakendes või iframe'ides), kuna iga kontekstil on omad konstruktorid.
Tüüpide kontrollimise alternatiivsed meetodid:
typeof: tagastab stringi, mis näitab põhitüüpi (string,number,boolean,object,function,undefined,symbol,bigint). Ei sobi konkreetse klassi kuuluvuse kontrollimiseks.Object.prototype.toString.call(): annab täpsema tüübi stringi ("[object Array]","[object Date]"jne).
Üldiselt on instanceof kasulik objekti kuuluvuse kontrollimiseks konkreetsele klassile või selle eelkäijale päriliku ahela kaudu.