Junior
რა შემოწმებს instanceof ოპერატორი JavaScript-ში?
sobes.tech AI
პასუხი AI-სგან
JavaScript-ში instanceof ოპერატორი შემოწმებს, არის თუ არა ობიექტი კონკრეტული კლასი ან კონსტრუქტორის ინსტანცია.
მუშაობის პრინციპი:
instanceofოპერატორი შემოწმებს, არის თუ არა კონსტრუქტორისprototypeობიექტი ობიექტის პროტოტიპულ ჯაჭვში.- თუ
prototypeკონსტრუქტორის ჯაჭვშია, შედეგი იქნებაtrue. - თუ არა, შედეგი იქნება
false.
მაგალითები:
// კლასი შექმნა
class Animal {
// კონსტრუქტორი
constructor(name) {
this.name = name;
}
}
// კლასი ინსტანციის შექმნა
let dog = new Animal("Buddy");
// შემოწმება, არის თუ არა dog `Animal`-ის ინსტანცია
console.log(dog instanceof Animal); // true
// შემოწმება, არის თუ არა dog `Object`-ის ინსტანცია (ჯაჭვში)
console.log(dog instanceof Object); // true
// შემოწმება, არის თუ არა dog `Array`-ის ინსტანცია (არ არის)
console.log(dog instanceof Array); // false
// ინტეგრირებული ტიპების შემოწმება
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 (პრიმიტიული მნიშვნელობებისთვის)
// შექმნილი ახალი ობიექტით
let numObj = new Number(123);
console.log(numObj instanceof Number); // true
ს special თვისებები:
instanceofმუშაობს პროტოტიპულ ჯაჭვზე, ამიტომ შედეგი შეიძლება იყოსtrueმშობელ კონსტრუქტორებისთვისაც.- პრიმიტიული ტიპებისთვის (string, number, boolean, null, undefined, symbol, bigint),
instanceofჩვეულებრივ აბრუნებსfalse, თუ ისინი არ შექმნილია შესაბამისი ობიექტის მეშვეობით (new String(),new Number()და ა.შ.). - შეიძლება იყოს არასიზუსტე JavaScript-ის სხვადასხვა კონტექსტში მუშაობისას (მაგ., სხვადასხვა ბრაუზერის ფანჯრებში ან iframe-ებში), რადგან თითოეულ კონტექსტს აქვს თავისი კონსტრუქტორები.
ტიპის შემოწმების სხვა მეთოდები:
typeof: აბრუნებს სტრინგს, რომელიც მიუთითებს ძირითადი მონაცემთა ტიპზე (string, number, boolean, object, function, undefined, symbol, bigint). არ არის შესაფერისი კონკრეტული კლასის შემოწმებისთვის.Object.prototype.toString.call(): აბრუნებს უფრო ზუსტ სტრინგს ობიექტის ტიპზე ("[object Array]","[object Date]"და ა.შ.).
საერთო ჯამში, instanceof სასარგებლოა იმის შემოწმებისთვის, მიეკუთვნება თუ არა ობიექტი კონკრეტულ კლასს ან მის მემკვიდრეობას.