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

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

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

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

یک آبجکت لیستی غیرسفارشی از دیتاتایپ های اولیه ( و گاهی اوقات ارجاعی) هستند که به صورت جفت‌های "نام-مقدار" ذخیره می‌شوند. هر آیتم از این لیست رو یک ویژگی (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

من میکائیل اندیشه هستم که از سال ۲۰۱۱ وارد حوزه برنامه نویسی و طراحی وب شدم، ابتدا با زبان‌ c++ در رشته تحصیلیم ( مهندسی فناوری اطلاعات ) آشنا شدم و پس از آن وارد طراحی وب سمت کلاینت ( Front-End ) شدم و پس از چند سال کار و تجربه در این حوزه از اواسط ۲۰۱۷ وارد برنامه نویسی و سمت بک اند شدم و با زبان php کار میکنم. به زبان‌های php و javascript علاقه زیادی دارم و سعی میکنم در این دو بخش بیشتر یاد بگیرم.

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

ارسال پاسخ RozhinSH
RozhinSH
دوشنبه ۲۸ خرداد ۱۳۹۷ ۱۲:۰۳
سلام ممنون از مقاله خوبتون.فقط فکر میکنم اشتباهی تو کدی که در مثال اول گذاشتین پیش اومده یه دات . بعدageGroup اضافه گذاشتین خواستم اطلاع بدم که بقیه دچار سردرگمی نشوند.با تشکر
console.log(ageGroup.["15"]); // Children
ارسال پاسخ محسن
محسن
چهارشنبه ۲۱ تیر ۱۳۹۶ ۲۱:۳۱
من میخوام کاربرای سایتم وقتی وارد یک صفحه خاصی از سایتم میشن ، به طور تصادفی و به صورت خودکار (بدون انجام کلیک) به یکی از لینک هایی که تو سایتم قرارداده ام هدایت بشن . آیا انجام این کار ممکنه ؟
در واقع سایت هدف مثلا endsite.com هست اما لینک های مختلفی از این سایت توی صفحه سایت من به نمایش در میاد و حالا میخوام به صورت تصادفی و خودکار کاربران سایتم به اون صفحات هدایت بشن . تقریبا چیزی شبیه به خوراک RSS . ممنون میشم راهنمایی کنید .
ارسال پاسخ reza
reza
یکشنبه ۰۳ بهمن ۱۳۹۵ ۱۵:۰۰
سلام منظور از کد یعنی چی :
Date.setFullyear=function();
از چه روشی استفاده کرده؟