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

یادداشت‌ها

»

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

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

هر آبجکت در جاوا اسکریپت می‌تواند حاوی یک سری مقادیر (پراپرتی) و یک سری عملکرد (متد) باشد به همین خاطر شئ‌گرایی در جاوا اسکریپت با کمک آبجکت‌ها (شبیه کلاس در PHP) قابل پیاده‌سازی است.

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

آیا آبجکت‌ها همان JSON است؟! این سوالی است که بسیاری از برنامه‌نویسان تازه‌کار می‌پرسند. خیر JSON حاصل تبدیل «پراپرتی‌ها» (و نه متدها)ی یک آبجکت جاوااسکریپت به صورت یک رشته (string) است تا کار ذخیره آن در دیتابیس یا تبادل آن با سرور را ساده کند. با استفاده از دو متد 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]);

در حال تکمیل...


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

مدیریت

نام وسیله

اعتبار ورود

نام کاربری

رمز عبور

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

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

تبلیغات

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

دامنه‌هایی که می‌تواند مصرف تخصصی داشته باشد:
AnyDesk.ir, Firebase.ir, Angularjs.ir, 9px.ir alAdmin.ir, iQore.ir notion.ir, 3dn.ir,

دامنه‌هایی که می‌تواند مصرف فرهنگی/مذهبی داشته باشد:
mavaez.ir, 2aha.ir, babolelm.ir, mahjoor.ir

دامنه‌هایی که می‌تواند مصرف شخصی/عمومی داشته باشد:
azizami.ir, 90blog.ir