Junior
JavaScriptda instanceof operatori nima tekshiradi?
sobes.tech AI
AIdan javob
JavaScriptda instanceof operatori, obyekt ma ma'lum bir sinf yoki konstruktorning nusxasi ekanligini tekshiradi.
Ishlash prinsipi:
instanceofoperatori, konstruktorningprototype'sini obyektning prototip zanjirida mavjudligini tekshiradi.- Agar
prototypezanjirda mavjud bo'lsa, natijatruebo'ladi. - Aks holda, natija
falsebo'ladi.
Misollar:
// Sinf yaratamiz
class Animal {
// Konstruktor
constructor(name) {
this.name = name;
}
}
// Sinf nusxasini yaratamiz
let dog = new Animal("Buddy");
// dog obyektining Animal sinfining nusxasi ekanligini tekshirish
console.log(dog instanceof Animal); // true
// dog obyektining Object sinfining nusxasi ekanligini tekshirish (prototip zanjiri orqali)
console.log(dog instanceof Object); // true
// dog obyektining Array sinfining nusxasi ekanligini tekshirish (emas)
console.log(dog instanceof Array); // false
// Ichki turlar bilan tekshirish
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 (primitiivlar uchun, instanceof maxsus ishlaydi)
// `new` bilan yaratilgan primitiivlar uchun
let numObj = new Number(123);
console.log(numObj instanceof Number); // true
Xususiyatlar:
instanceofprototip zanjiri orqali ishlaydi, shuning uchun natijatruebo'lishi mumkin, hatto ota-klasslar uchun ham.- Primitiiv turlar (string, number, boolean, null, undefined, symbol, bigint) uchun,
instanceofodatdafalseqaytaradi, agar ular mos keladigan ob'ekt bilan yaratilmagan bo'lsa (new String(),new Number(), va hokazo). - JavaScriptning turli bajarilish kontekstlarida (masalan, turli brauzer oynalari yoki iframe'lar) ishlashda, har bir kontekst o'z konstruktorlariga ega bo'lgani uchun, bu usul to'g'ri bo'lmasligi mumkin.
Turi tekshirish uchun o'xshash yondashuvlar:
typeof: asosiy ma'lumot turini ko'rsatadigan satrni qaytaradi (string, number, boolean, object, function, undefined, symbol, bigint). Maxsus sinfga tegishli ekanligini tekshirish uchun mos emas.Object.prototype.toString.call(): ob'ektning turini aniqroq ko'rsatadigan satrni qaytaradi ("[object Array]","[object Date]", va hokazo).
Umuman olganda, instanceof ob'ektning ma'lum bir sinfga yoki uning ajdodlariga tegishli ekanligini tekshirish uchun foydalidir.