با Reflect در جاوااسکریپت بیشتر آشنا بشید ✌️
آبجکت یا شئ Reflect، شامل متدهای استاتیک برای فراخوانی متدهای داخلی interceptable اشیاء جاوااسکریپته. برخلاف اکثر گلوبال آبجکت ها، Reflect یک constructor نیست، یعنی شما نمیتونید از اون با اوپراتور new استفاده کنید یا شیء Reflect رو به عنوان یک تابع کال کنید. تمام ویژگیها و متدهای Reflect استاتیک هستن (مثل آبجکت Math).
✅ آبجکت Reflect مجموعهای از توابع استاتیک رو فراهم میکنه که نامهای مشابهی با متدهای هندلر پروکسی دارن.
مهم ترین استفاده ای که از Reflect میتونیم کنیم، اینه که default behavior رو در traps های (تابعی که رفتار متد داخلی مربوط به شیء یا آبجکتو تعریف میکنه) هندلر پروکسی مشخص کنیم.
یک trap برای متوقف کردن یک عملیات بر روی یک آبجکت استفاده میشه. برای مثال کدی که در خط های پایین تر میبینید، یک پروکسی با trap یک deleteProperty ایجاد میکنه که متد داخلی [[Delete]] رو متوقف میکنه. ()Reflect.deleteProperty برای فراخوانی رفتار پیشفرض [[Delete]] بر روی targetObject بهطور مستقیم استفاده میشه، که میتونید اونو با delete هم جایگزین کنید.
🚀 متدهای
اگر از اپراتور
تقریباً رفتار هر متد
برای کسب اطلاعات بیشتر و درک عمیق تر Reflect و static method هاش، میتونید به منبع زیر مراجعه کنید🏖️
Document🌕
#javascript #reflect
@CodeModule
آبجکت یا شئ Reflect، شامل متدهای استاتیک برای فراخوانی متدهای داخلی interceptable اشیاء جاوااسکریپته. برخلاف اکثر گلوبال آبجکت ها، Reflect یک constructor نیست، یعنی شما نمیتونید از اون با اوپراتور new استفاده کنید یا شیء Reflect رو به عنوان یک تابع کال کنید. تمام ویژگیها و متدهای Reflect استاتیک هستن (مثل آبجکت Math).
مهم ترین استفاده ای که از Reflect میتونیم کنیم، اینه که default behavior رو در traps های (تابعی که رفتار متد داخلی مربوط به شیء یا آبجکتو تعریف میکنه) هندلر پروکسی مشخص کنیم.
یک trap برای متوقف کردن یک عملیات بر روی یک آبجکت استفاده میشه. برای مثال کدی که در خط های پایین تر میبینید، یک پروکسی با trap یک deleteProperty ایجاد میکنه که متد داخلی [[Delete]] رو متوقف میکنه. ()Reflect.deleteProperty برای فراخوانی رفتار پیشفرض [[Delete]] بر روی targetObject بهطور مستقیم استفاده میشه، که میتونید اونو با delete هم جایگزین کنید.
const p = new Proxy({}, {
deleteProperty(targetObject, property) {
// Custom functionality: log the deletion
console.log("Deleting property:", property);
// Execute the default introspection behavior
return Reflect.deleteProperty(targetObject, property);
},
},
);
Reflect
کنترل بیشتری بر نحوه فراخوانی متدهای داخلی فراهم میکنن. برای مثال، ()Reflect.construct
تنها راهیه که میتونید یک تابع تارگت رو با یک مقدار خاص برای new.target
بسازید. اگر از اپراتور
new
برای فراخوانی یک تابع استفاده کنید، مقدار new.target
همیشه خود تابع خواهد بود. این موضوع تأثیرات مهمی بر روی subClass ها داره. برای مثال، ()Reflect.get
به شما اجازه میده تا یک getter رو با یک مقدار this
کاستوم اجرا کنید، در حالی که دسترسی به ویژگیها، همیشه از شیء فعلی به عنوان مقدار this
استفاده میکنه.تقریباً رفتار هر متد
Reflect
رو میشه با بعضی دیگه از سینتکسها یا متدها انجام داد. بعضی از این متدها، متدهای استاتیک هم اسم تو کلاس Object
دارن، هرچند که تفاوتهای ظریفی وجود داره.برای کسب اطلاعات بیشتر و درک عمیق تر Reflect و static method هاش، میتونید به منبع زیر مراجعه کنید
Document
#javascript #reflect
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡6🔥3