ایجاد: ۱۳:۵۸ ۱۳۹۵/۶/۱۸
ویرایش: ۱۲:۱۰ ۱۳۹۵/۱۱/۱۵

یادداشت‌ها

»

آبجکت در جاوا اسکریپت

آرایه، اعداد، رشته‌ها و ... هر یک نوعی از داده در جاوا اسکریپت هستند اما به جرات می‌توان گفت که آبجکت‌ها، مهم‌ترین هستند و در این مطلب به آنها می‌پردازیم...
آشنایی با آبجکت‌ها به فهم بهتر لایبرری‌ها و فریم‌ورک‌های جاوا اسکریپت کمک می‌کند و برای کار با برخی از آنها همچون AngularJS، داشتن فهم عمیق از آبجکت‌ها اجتناب‌ناپذیر است.

هر آبجکت در جاوا اسکریپت می‌تواند حاوی یک سری مقادیر (پراپرتی) و یک سری عملکرد (متد) باشد به همین خاطر شئ‌گرایی (که در اکثر زبانهای برنامه‌نویسی با Class ها پیاده‌سازی می‌شود) در جاوا اسکریپت با کمک آبجکت‌ها پیاده‌سازی می‌شد هرچند در ES6 ما شاهد معرفی class در JS هستیم.

var myObject = {
    name: 'alireza',
    age: 35,
    next: function(n){
        return n+1;
    }
};
همانطور که می‌بینید، هر متد یا پراپرتی، دارای یک کلید (key) برای دسترسی به آن است. واضح است که این کلیدها نمی‌توانند تکراری باشند. همچنین توجه کنید که ترتیب این کلیدها قابل اعتماد نیست (برخلاف آرایه). به عبارت دیگر؛ اگر شما آبجکت فوق را بخواهید پرینت کنید، می‌بینید که ابتدا age پرینت می‌شود و سپس name در حالی که ما در موقع تعریف آبجکت، ابتدا name را تعریف و به آن مقدار دادیم.
دلیل اهمیت آبجکت‌ها: آبجکت‌های جاوا اسکریپت بسیار منعطف بوده و استفاده از آنها بسیار آسان است لذا برای «ذخیره» و همچنین «تبادل» داده، جزو بهترین و پراستفاده‌ترین گزینه‌های موجود هستند.

آیا آبجکت‌ها همان JSON است؟! این سوالی است که بسیاری از برنامه‌نویسان تازه‌کار می‌پرسند. خیر JSON یک آبجکت است که فقط حاوی مقادیر (پراپرتی) است و معمولا به صورت یک رشته (string) درمی‌آید تا کار تبادل دیتا با سرور یا ذخیره آن در دیتابیس، localStorage و ... را ساده کند. جی‌سان را می‌توان ساختاری «سبک» و جایگزین مدرن XML دانست.
با استفاده از دو متد stringify و parse در آبجکت JSON (که متعلق به خود جاوا اسکریپت است) می‌توان در اغلب مرورگرها حتی IE8، یک آبجکت را به یک رشته تبدیل کرد و برعکس.

چرا متد؟ تعریف به صورت فانکشن جدا، چه اشکالی دارد؟ این هم یک سوال که برای نوآموزان پیش می‌آید. استفاده از آبجکت باعث می‌شود که قلمرو فانکشن از خارج آبجکت ایزوله شود. همچنین شما دیگر نگران اسم فانکشن نیستید. اگر شما ده تا آبجکت داشته باشید، هر کدام‌شان برای خودش می‌تواند متدی به نام مثلا myFunc داشته باشد.

چطور به یک پراپرتی‌ها و متدهای یک آبجکت دسترسی پیدا کنم یا آن را تغییر دهم؟
برای این کار از دو روش دسترسی با نقطه (دات نوتیشن) و دسترسی با براکت [] می‌توان استفاده کرد. برای دیدن لیست کل کلیدهای مربوط به آبجکت (که با استفاده از آن می‌توان به کل پراپرتی‌ها و متدها دسترسی پیدا کرد) می‌توان از for استفاده کرد. کد زیر را ببینید:

var myObject = {name: 'alireza', age: 35, next: function(n){return n+1;}};
console.log(myObject.age); // print: 35
myObject.age = 37; // ست کردن
console.log(myObject.age); // print: 37
console.log(myObject['age']); // print: 37
$temp = 'age';
console.log(myObject[$temp]); // print: 37
console.log(myObject.next(1)); // print: 2
for(var key in myObject) // دسترسی به کل کلیدهای آبجکت و مقادیر آن
    console.log(key, myObject[key]);

فرق آرایه و آبجکت چیست؟ آرایه و آبجکت هر دو، نوعی داده در JS هستند که میتوانند خود حاوی چند داده در درونشان باشند و هر دو با reference پاس داده می‌شوند اما تفاوت‌هایی نیز با هم دارند که مهم‌ترین آنها عبارتست از:

  • آرایه‌ها با عدد ایندکس‌گذاری می‌شوند و ترتیب عناصر آن حفظ می‌شود و ترتیب مهم است. اما آبجکت‌ها اینگونه نیستند و ترتیب در آنها مهم نیست و مقادیر (پراپرتی)، با یک کلید رشته‌ای قابل دسترسی است.
  • برخلاف آبجکت‌ها؛ آرایه‌ها در JS دارای یک سری متدهای از پیش آماده و built-in بودند اما اخیرا در ES6 هم متدهای جذابی مثل Observe, Freeze و ... برای آبجکت‌ها اضافه شده‌اند.

یادداشت‌های مرتبط
  1. کشیدن و انداختن (رها کردن)
  2. گرافیک برداری
  3. API چیست؟
  4. قلمرو متغیرها در پی‌اچ‌پی و جاوا اسکریپت
  5. کار با داده‌های سلسله مراتبی در پایگاه داده

مدیریت

نام وسیله

اعتبار ورود

نام کاربری

رمز عبور

رمز یکبارمصرف

... لیست تمام یادداشت‌ها

تبلیغات

ربات‌های تلگرامی:
مجموعه ربات‌های تلگرامی ما برای ساده‌تر کردن کار با تلگرام و مدیریت کانال و ...
خرید هاست (فضا):
دنبال یک هاست به صرفه برای شروع کار می‌گردید؟
مشخصات و قیمت‌های این مورد رو ببینید. من سال‌ها مشتری‌شون بودم و پشتیبانی‌شون هم خوب بود.
دامنه‌های فروشی:
دامنه‌های زیر مربوط به ما یا مشتریان ماست که قابل فروش هستند. در صورت تمایل به خرید یکی از آنها، مبلغ پیشنهادی را از طریق فرم ارتباطی برای ما ارسال نمایید.

دامنه‌هایی که می‌تواند مصرف مذهبی داشته باشد:
دامنه‌هایی که می‌تواند مصرف تخصصی داشته باشد:
دامنه‌هایی که می‌تواند مصرف شخصی/عمومی داشته باشد: