const map = {};و در ادامه چنین شرطی داشتم:
if (word in map) {
//
}توی اون تست کیس خاص word مقدار "constructor" داشت. بنابراین شرط من میشد:
"constructor" in map // true
و شرط داشت true برمیگردوند؛ در حالی که من هیچوقت "constructor" رو به map اضافه نکردم.
دلیلش این بود که آبجکتهایی که با {} ساخته میشن، از Object.prototype ارثبری میکنن و constructor یکی از propertyهای اونجاست. عملگر in هم فقط پراپرتیهای خود آبجکت رو بررسی نمیکنه و زنجیره prototype رو هم بررسی میکنه.
برای اینکه فقط پراپرتیهای خود آبجکت بررسی بشن، میتونیم از Object.hasOwn استفاده کنیم:
Object.hasOwn(map, word)
یا اگر یک map کاملا خالی میخوایم که prototype نداشته باشه:
const map = Object.create(null);
#javascript
@techstuff100
