متد jQuery.extend() برای تغییر و Override تنظیمات آبجکتها
در این مقاله به تابع jQuery.extend می پردازیم. مستندات این تابع در آدرس زیر قابل دسترس است:
http://api.jquery.com/jQuery.extend/
هدف این تابع این است که یک آبجکت تنظیمات (به فرمت jSON ) را تغییر دهیم و تنظیمات جدیدی را به آن اضافه کنیم و تنظیمات موجود را رونویسی کنیم.
این تابع به دو صورت قابل فراخوانی است:
روش اول:
jQuery.extend( target [, object1] [, objectN] )
آرگومان اول:
target می باشد و یک آبجکت jSON است که میخواهیم تنظیمات آن را تغییر دهیم. میتواند یک متغیر باشد و یا یک آبجکت صریح JSON باشد (به صورت {...} ).
در صورتی که آرگومان های دوم و سوم و ... (N تا آرگومان میپذیرد) نیز حاضر باشند، مقادیر همهی آرگومان های بعدی در آرگومان اول کپی می شود.
اما اگر این تابع فقط یک آرگومان دریافت کرده باشد، این آرگومان مقادیر Property های خود jQuery را تغییر می دهد. یعنی اگر فقط یک آرگومان به این تابع ارسال کنیم، در واقع مانند این است که آرگومان اول (target) خود jQuery باشد و آرگومان ارسالی ما، آرگومان دوم باشد.
آرگومان دوم و ... :
آرگومان دوم به بعد، هر کدام یک آبجکت jSON هستند که Property های آنها در آبجکت اول کپی می شود.
خروجی تابع:
این تابع، target را دستکاری میکند و دوباره همان target دستکاری شده را بازمیگرداند.
در صورتی که بخواهیم آبجکت اول target دستکاری نشود، می توانیم متد را به صورت زیر فراخوانی کنیم:
var object = $.extend({}, object1, object2);
به این ترتیب، target یک آبجکت خام jSON است و لذا دستکاری شدن آن برای ما اهمیتی ندارد. آن چه مهم است این است که مقادیر object1 و object2 با هم ترکیب می شود و return می شود.
روش دوم:
jQuery.extend( [deep], target, object1 [, objectN] )
همان طور که میبینید، این روش نیز دقیقا مانند روش قبلی است با این تفاوت که یک آرگومان از نوع Boolean را به عنوان آرگومان اول می پذیرد. به این معنی که اگر اولین آرگومان این تابع، یک Boolean باشد، در واقع از روش دوم استفاده کرده ایم و اگر اولین آرگومان یک jSON باشد، از روش اول استفاده کرده ایم.
آرگومان اول چیست؟
اگر true باشد، عمل کپی کردن، عمقی خواهد بود و Property ها در لایههای زیرین نیز کپی میشوند.
نکات و مثال ها
نکات اصلی و مثالها را می توانید از اینجا بخوانید.
نظرات شما
قسمت نظرات با استفاده از سرویس دیسکاس پیاده سازی شده است. متاسفانه این سرویس از داخل ایران قابل دسترس نیست. لطفا از آی پی خارجی استفاده کنید.