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

آبجکت های جاوااسکریپت و جزئیات آن‌ها!
انواع داده‌های (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();
از چه روشی استفاده کرده؟