استفاده از علامت $ در جی کوئری
مسئله
ما قصد داریم به جای نوشتن فضای نام سراسری(global namespace) جی کوئری(یعنی jQuery)، از علامت جایگزین آن، یعنی $ استفاده کنیم تا از برخوردهای سراسری(global conflicts) جلوگیری کنیم.
راه حل
راه حل این است که یک تابع خود فراخوان(self-invoking) و بی نام(anonymous) ایجاد کنیم که شیء jQuery را به آن پاس دهیم و سپس از علامت $ بعنوان یک اشاره گر که به شیء jQuery اشاره می کند، استفاده کنیم. بعنوان مثال، تمام کدهای جی کوئری باید در داخل تابع خود-فراخوان زیر کپسوله(encapsulated) شوند.
(function($){ // $ با پارامتر private تابع برای ایجاد میدادن دید محلی
// $ و استفاده از علامت private میدان دید محلی
//بدون نگرانی از برخورد نام
})(jQuery); // jQuery فراخوانی تابع بدون نام و پاس دادن آن به شیء
توضیحات
کاری که انجام دادیم این است که مرجع کلی jQuery را به یک تابع پاس دادیم که یک میدان دید(scope) محلی(private) را برای ما ایجاد می کند. اگر ما این کار را انجام نداده بودیم، و از علامت $ در میدان دید سراسری(global scope) استفاده کرده بودیم، وارد یک ریسک می شدیم. و باید فرض می کردیم که هیچ اسکریپت دیگری در سند html نباید وجود داشته باشدکه از کاراکتر $ استفاده کند. چرا وقتی که می توانیم میدان دید محلی( private scope) خود را ایجاد کنیم، خود را دچار چنین ریسکی کنیم؟ یک مزیت دیگر برای انجام این کار این است که کد اضافه شده(included) در درون تابع خود-فراخوانِ بی نام، در میدان دید محلی(private) خودش اجرا خواهد شد. ما می توانیم مطمئن باشیم که، هر چیزی که در داخل این تابع قرار گرفته است، احتمالا باعث ایجاد برخورد(conflict) با دیگر کدهای جاوااسکریپت نوشته شده در میدان دید سراسری(global scope) نخواهد شد. اما در مورد برخورد برنامه ها چه کنیم؟ تنها کافیست میدان دید محلی(private scope) خود را ایجاد کنیم.
برای اطلاعات بیشتر در زمینه ی این روش، به این مقاله در آموزشگاه مجازی سینا مراجعه کنید.
{module کمک نقدی به نویسنده}
- بازدید: 653
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.