آموزش ویژگی های ECMAScript 6 (جلسه 49) : آموزش Proxy API - قسمت 3

ساخت وبلاگ

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

همونطور که در جلسه قبل مشاهده کردید یک مثال ساده برای متد یا دام get قرار دادیم و با استفاده از اون رفتار دسترسی به ویژگی های یک شئ رو تغییر دادیم. شما میتونین از تمام متدهای استاتیک Reflect API برای پروکسی به عنوان دام یا Trap استفاده کنید.

قرار دادن دام برای set

مثلا با استفاده از دام یا Trap مربوط به set میتونیم رفتار مشخص کردن مقدار برای ویژگی های شئ مورد نظر رو متناسب با نیازمون، تغییر بدیم.

مثلا فرض کنید میخوایم یک محدوده خاص برای ویژگی مورد نظرمون قرار بدیم و اگر کاربر عددی بیشتر از اون مقدار رو برای ویژگی وارد کرد، یک ارور رو به اون نمایش بدیم. کد زیر رو در نظر بگیرید:

همونطور که میبینید در ابتدا یک شئ بنام obj تعریف کردیم و ویژگی price رو برای اون برابر با 0 قرار دادیم. در خط 5 یک پروکسی برای این شئ در نظر گرفتیم و دام set رو برای اون قرار دادیم. زمانی که کاربر از طریق پروکسی بخواد مقدار ویژگی price رو تغییر بدهد، درون دام set میوفته و میتونیم رفتار تغییر مقدار ویژگی رو تغییر بدیم.

میبینید که یک if..else قرار گرفته و تا زمانی که مقدار وارد شده برای ویژگی price کمتر از 500 باشد، مقدار مورد نظر برای ویژگی بدون هیچ مشکلی قرار داده میشه و true برگشت داده میشه.

اما زمانی که مقدار وارد شده بیشتر از 500 باشد، مقدار مورد نظر برای ویژگی قرار نمیگیره و یک Error ساخته میشه و توضیحات رو به کاربر نمایش میده.

در خطوط انتهایی قصد داریم از طریق پروکسی مقدار ویژگی price رو تغییر بدیم. زمانی که مقدار رو برابر با 100 قرار میدیم، چون 100 کمتر از 500 هست، پس هیچ مشکلی پیش نمیاد و مقدار مورد نظر قرار داده میشه.

اما در خطوط بعدی این ویژگی رو برابر با 600 قرار دادیم و چون 600 بیشتر از 500 می باشد، یک ارور به وجود میاد و به همین دلیل اون رو درون try..catch قرار دادیم تا کدهای بعد از ارور نیز بدون مشکل اجرا بشوند. درون بخش catch به ارور مورد نظر دسترسی داریم و میتونیم اون رو در Console به کاربر نمایش بدیم. خروجی در Console بصورت زیر خواهد بود:

میبینید که زمانی که میخوایم 600 رو به عنوان مقدار قرار بدیم، یک ارور نمایش داده میشه و مقدار ویژگی نیز تغییری نمیکنه.

Trap یا دام های دیگه ای هم هستن که میتونین از اونا نیز برای تغییر دادن رفتار یک شئ استفاده کنید. به شرح زیر:

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

مطالعه بیشتر

برای مطالعه بیشتر در مورد پروکسی ها میتونین لینکهای زیر رو ببینید:

  • Sitepoint
  • MDN
  • KeithCirkel
  • dealwithjs
  • 2ality
  • ponyfoo

امیدوارم از این مطلب خوشتون اومده باشه.

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

یا علی

سون لرن • آموزش...
ما را در سایت سون لرن • آموزش دنبال می کنید

برچسب : نویسنده : استخدام کار 7learn بازدید : 335 تاريخ : شنبه 27 آبان 1396 ساعت: 20:21

خبرنامه