آبجکت های جاوااسکریپت و جزئیات آن‌ها!

آبجکت های جاوااسکریپت و جزئیات آن‌ها!
انواع داده‌های (data type) هسته‌ی جاوااسکریپت ( بیشترین استفاده یا بنیادی ترین بخش) از نوع آبجکت (شیء) هستند.
پیچیده ترین نوع داده‌های (data type) جاوااسکریپت، آبجکت‌ها هستند و پنج نوع داده‌ی ساده داره که به شرح زیر هستند :
Number, String, Boolean, Undefined, Null
خرید شارژ ایرانسل
خرید شارژ ایرانسل، همراه اول، رایتل | خرید بسته های اینترنت ایرانسل | etore.ir
دانلود بازی اندروید
اندروید سیتی | بررسی و دانلود آخرین های اندروید
خرید سرور مجازی
ارائه سرور مجازی SSD NVMe برای اولین بار در ایران ؛ نهایت سرعت را تجربه کنید.
خودتان را اینجا معرفی کنید

در ادامه مقاله کلمه‌ی "نوع داده" رو با نام "دیتاتایپ" مینویسم :|
تفاوت این دو دیتاتایپ (آبجکت و ساده) در اینه که دیتاتایپ‌های ساده تغییر ناپذیرند ولی دیتاتایپ‌های آبجکت تغییر پذیرند و زمانیکه آبجکت تغییر کند تغییر داده می‌شوند. (شاید کمی مبهم باشه براتون که در ادامه مقاله متوجه منظورم خواهید شد)

مفهوم و تعریف آبجکت (شی‌ء) چیست؟!

یک آبجکت لیستی غیرسفارشی از دیتاتایپ های اولیه ( و گاهی اوقات ارجاعی) هستند که به صورت جفت‌های "نام-مقدار" ذخیره می‌شوند. هر آیتم از این لیست رو یک ویژگی (property) می‌نامند ( در توابع به نام متد میشناسیمشون).
یک مثال ساده از آبجکت‌ها :

var myFirstObject = {firstName: "MajidOnline", website: "majidonline.com"}
اگر کمی در مورد آبجکت‌ها فکر کنید متوجه میشید که هر آیتم از یک لیست که property گفته می‌شوند به صورت جفت‌های نام-مقدار ذخیره می‌شوند. که در مثال فوق نام‌های property‌ها شامل : firstName , website  و مقدارها شامل : Majidonline , majidonline.com می‌باشند.
نام propertyها میتونه به صورت رشته و یا عدد باشه ، که اگر به صورت عدد باشه هنگامیکه میخواهیم اون رو فراخوانی کنیم حتما باید از براکت استفاده کنیم :

برای مثال :
var ageGroup = { 15 : "Children" , 25:"young",100:"very old"}
console.log(ageGroup.30); // Error!!!
console.log(ageGroup.["15"]); // Children

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

داده‌های از نوع ارجاع و اولیه Reference Data Type and Primitive Data Types

تفاوت اصلی بین داده‌های از نوع ارجاع (Reference) و اولیه (Primitive) در این است که مقدار دیتاتایپ‌های ارجاع به عنوان یک مرجع ذخیره میشن و مقدار اونها از طریق متغیر قابل تغییر نیست و مستقیم درون متغیر ذخیره نمی‌شوند! ولی دیتاتایپ‌های اولیه میتونند تغییر کنند ، به عنوان مثال :
Var person = "Mekaeil";
Var anotherPerson = person;
Person = "Reza";
Console.log(anotherPerson); // Mekaeil
Console.log(person); // Reza
دقت کنید که در این مثال هیچ اشتباهی رخ نداده و با تغییر مقدار متغیر person  به مقدار Reza هنوزم وقتی متغیر anotherPerson  رو  چاپ میکنیم مقدار اول رو چاپ میکنه و مقدار جدیدی که به متغیر person دادیم باعث نمیشه مقدار anotherPerson  تغییر کنه!

در مقایسه، دیتاتایپ‌های اولیه (Primitive) به صورت مقادیر قابل تغییر ذخیره خواهند شد برای مثال :
 
var person = {name : "Mekaeil"}
var anotherPerson = person;
person.name = "Ali";
 
console.log(anotherPerson.name); // Ali
console.log(person.name); // Ali
همانطور که میبینید ما آبجکت person  رو درون متغیر anotherPerson  ذخیره کردیم ولی دقت کنید که این مقدار به عنوان یک داده واقعی و غیرقابل تغییر ذخیره نشده است و هر بار که اون رو فراخوانی می‌کنیم به مرجع خودش اشاره میکنه و مقدار رو از اونجا فراخوانی میکنه.

ساخت آبجکت :

دو راه معمول برای ساخت آبجکت وجود داره :

1 - Object Literals

یکی از رایجترین و براستی راحتترین راه ساخت آبجکت استفاده از این شیوه می‌باشد :
//this is empty object
var firstTry = {};
 
//this is an Object with 4 item
var majidonline = {
color : "red",
website : "majidonline",
CEO : "Majid Alavizadeh",
 
sayMajid : function(){
      console.log("MajidOnline.com"); 
  } 
}

2 - Object Constructor ( آبجکت سازنده )

دومین راه معمول برای ساخت آبجکت استفاده از این روش آبجکت سازنده می‌باشد. این روش معمولا بیشتر در توابع مورد استفاده قرار می‌گیرد.
 
var majidonline   = new Object();
majidonline.color = "red";
majidonline.website = "majidonline.com";
majidonline.CEO  = "Majid Alavizadeh";
majidonline.sayMajid = function(){
    console.log("Majidonline.com"); 
}

enlightenedتوجه کنید که در نام‌هایی که در آبجکت‌ها استفاده میکنید از کلمات رزرو شده استفاده نکنید.
enlightenedآبجکت‌ها میتونن شامل انواع دیتاتایپ باشند شامل اعداد،آرایه و حتی آبجکت.


امیدوارم مفید بوده باشه wink

میکائیل اندیشه هستم، چند سالی میشه در حوزه Front-End کار میکنم و بیشتر علاقه ی من در زمینه برنامه نویسی JavaScript , jQuery و تکنولوژی های مرتبط هست و فعلا نیز در این حوزه مطالعه میکنم ... :)

نظرات و سوالات کاربران

ارسال پاسخ reza
reza
یکشنبه ۰۳ بهمن ۱۳۹۵ ۱۵:۰۰
سلام منظور از کد یعنی چی :
Date.setFullyear=function();
از چه روشی استفاده کرده؟