آموزش ویژگی های ECMAScript 6 (جلسه 42) : آموزش Reflect API - قسمت 1



visibility  
mode_comment   ۲

همونطور که اطلاع دارید در جلسه قبل مباحث مربوط به fetch API رو به پایان رسوندیم و توضیحات کاملی در مورد استفاده از اون دادیم. در این جلسه میخوایم کار با Reflect API رو شروع کنیم و شما رو بصورت مقدماتی با این مبحث جدید معرفی شده در ES6 آشنا کنیم.

در ES6 توجه خاصی به MetaProgramming شده است.

سه مبحث Symbol ها و Reflect API و Proxy API بطور مستقیم در مورد MetaProgramming هستند و هر کدام کار خاصی رو انجام می دهند. در واقع منظور از Meta Programming روشهای مختلفی هست که برنامه از جزئیات خودش میتونه اطلاع پیدا کنه و همچنین میتونه در خودش دستکاری کنه و کار جدیدی رو انجام بده یا کار خاصی رو بصورت دیگری انجام بده.

متخصص جاوا اسکریپت
با جاوا اسکریپت جادوگری کنید! آیا می دونید با زبان جاوااسکریپت می تونید، برای فرانت اند و بک اند وبسایت ها برنامه نویسی کنید؟ همینطور اپلیکیشن دسکتاپ و موبایل بسازید؟ اگر دوست داری اینکارها رو انجام بدی و React, ElectronJS, ReactNative, NodeJS,MongoDB و ... رو تو یه دوره یاد بگیری، متخصص جاوااسکریپت سون لرن رو حتما ببین : متخصص جاوا اسکریپت arrow_back
  • از Symbol ها در مورد پیاده سازی Meta Programming استفاده میکنیم. در جلسات قبل برای Symbol که جدیدا اضافه شده آموزش قرار دادیم. ارز Symbol میتونین برای کلاسها یا اشیاء و ... استفاده کنید و رفتار اونا رو تغییر بدین.
  • از Reflect API میتونین در بازرسی و بررسی استفاده کنید. با استفاده از اون میتونین به اطلاعات خیلی جزئی در مورد کدهاتون دسترسی پیدا کنید و یا کار خاصی رو انجام بدین.
  • با استفاده از Proxy API میتونین یک حائل یا لایه میانی بین خودمون و شئ مورد نظر قرار بدیم. مثلا میتونیم یک شئ رو با استفاده از Proxy پوشش بدیم و با استفاده از Trap یا حبس کردن رفتار اونا رو تغییر بدیم.
more  بیشتر بخوانید : ترفندهای پیشرفته jQuery (قسمت 57)

Reflect یک شئ سراسری جدید می باشد (همانند JSON یا Math) که متدهای کاربردی زیادی رو برای بازرسی کدهای مورد نظر در اختیارمون قرار میده. قبل از اومدن ES6 قابلیتهایی برای بازرسی اشیاء وجود داشت. برای مثال میتونیم Object.keys یا Object.getOwnPropertyNames و ... رو نام ببریم. پس چرا با وجود این موارد یک API جدید بنام Reflect معرفی شده است و چرا متدهای جدید رو به شئ Object موجود اضافه نکرده اند؟

این موارد سوالاتی هستند که در ادامه پاسخ اونا رو خواهیم داد.

Reflect شامل تعدادی از متدهای داخلی Javascript هست که اکنون در یک جا و بصورت متمرکز قرار داده شده است.

حالا میخوایم پاسخ سوال بالا رو قرار بدیم:

  • Reflect فقط مخصوص پوشش دادن اشیاء به وجود نیامده و میتونین با استفاده از اون کارهای مربوط به توابع و کلاسها و ... رو نیز مورد بررسی قرار بدین. مثلا با استفاده از Reflect.apply میتونین یک تابع رو با Context و آرگومانهای مورد نظرتون فراخوانی کنید.
  • اگر همه متدهای مربوط به بررسی کدها در یک جا قرار بگیره، باعث میشه که نظم بیشتر بشه و همه چیز بصورت طبقه بندی شده باشند.
  • کلمات کلیدی همانند typeof یا instanceof یا delete و ... که قبل از ES6 وجود داشتند، کارهای مربوط به بازرسی کدها رو انجام میدادند و استفاده از اونا کمی گیج کننده بود. همچنان از اونا برای پوشش دادن مرورگرهای قدیمی میتونین استفاده کنید.

متدهای Reflect

Reflect همانند Math، تابع سازنده یا Constructor نیست و نمیتونین اون رو با استفاده از کلمه کلیدی new استفاده کنید و اون رو بصورت مستقیم فراخوانی کنید. در عوض Reflect همانند Math شامل متدهای Static یا استاتیکی هست که میتونین از اونا در جهت اهداف مختلف استفاده کنید.

متدهای مربوط به Reflect عبارتند از:

  • apply
  • construct
  • defineProperty
  • deleteProperty
  • get
  • set
  • getOwnPropertyDescriptor
  • getPrototypeOf
  • setPrototypeOf
  • has
  • isExtensible
  • preventExtensions
  • ownKeys

در جلسات بعد این متدها رو بصورت کامل به همراه مثال براتون توضیح خواهیم داد.

موفق و پیروز باشید.

یا علی

comment دیدگاه کاربران
Mr abbas

🙂 tnx

محمد اسفندیاری

خواهش میکنم موفق باشید

ارسال نظرات

کاربر گرامی، امکان ارسال نظر و پشتیبانی برای دوره های مجازی فقط برای دانشجویان این دوره امکان پذیر می باشد.