Junior
Ko pārbauda instanceof operators JavaScript?
sobes.tech AI
Atbilde no AI
JavaScript instanceof operators pārbauda, vai objekts irstancē no noteiktas klases vai konstruktora.
Darbo princips:
instanceofpārbauda, vai konstruktoraprototypeir objekta prototipu ķēdē.- Ja
prototypeir ķēdē, rezultāts irtrue. - Ja nav, rezultāts ir
false.
Piemēri:
// Klases izveide
class Animal {
// Konstruktors
constructor(name) {
this.name = name;
}
}
// Klases instancēšanas izveide
let dog = new Animal("Buddy");
// Pārbaude, vai dog ir `Animal` instancē
console.log(dog instanceof Animal); // true
// Pārbaude, vai dog ir `Object` instancē (caur ķēdi)
console.log(dog instanceof Object); // true
// Pārbaude, vai dog ir `Array` instancē (nav)
console.log(dog instanceof Array); // false
// Pārbaude ar iebūvētiem tipiem
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 (primitīviem tipiem)
// Ar jaunu objekta izveidi
let numObj = new Number(123);
console.log(numObj instanceof Number); // true
Īpašības:
instanceofdarbojas caur prototipu ķēdi, tāpēc rezultāts var būttruearī vecāku konstruktoriem.- Primitīviem tipiem (string, number, boolean, null, undefined, symbol, bigint)
instanceofparasti atgriežfalse, ja tie nav izveidoti ar atbilstošo objektu (new String(),new Number()utt.). - Tas var būt neprecīzi, strādājot ar dažādiem JavaScript izpildes kontekstiem (piemēram, dažādos pārlūkprogrammas logu vai iframe kontekstos), jo katram kontekstam ir savi konstruktori.
Citi veidi, kā pārbaudīt tipu:
typeof: atgriež virkni, kas norāda uz pamattipu (string,number,boolean,object,function,undefined,symbol,bigint). Nav piemērots konkrētas klases pārbaudei.Object.prototype.toString.call(): sniedz precīzāku tipu, atgriežot virkni ("[object Array]","[object Date]"utt.).
Kopumā instanceof ir noderīgs, lai pārbaudītu, vai objekts pieder konkrētai klasei vai tās mantojumam.