Junior
Ismeri a 'in' operátort a JavaScript-ben? Milyen hátrányai vannak?
sobes.tech MI
Válasz az MI-től
A JavaScript-ben az in operátor arra szolgál, hogy ellenőrizze, létezik-e egy tulajdonság egy objektumban vagy annak prototípus láncában. Például:
const obj = { a: 1 };
console.log('a' in obj); // true
console.log('toString' in obj); // true, mert a toString a prototípusban van
Az in operátor hátrányai:
- Nemcsak az objektum saját tulajdonságait ellenőrzi, hanem az örökölt tulajdonságokat is a prototípuson keresztül, ami hamis pozitív eredményekhez vezethet.
- Nem különbözteti meg, hogy a tulajdonság enumerálható-e vagy sem.
Ha csak az objektum saját tulajdonságait szeretnéd ellenőrizni, akkor jobb a hasOwnProperty metódust használni:
console.log(obj.hasOwnProperty('a')); // true
console.log(obj.hasOwnProperty('toString')); // false
Így az in hasznos általános tulajdonságkereséshez, de óvatosságot igényel, ha a tulajdonság tulajdonjogáról van szó.