سبد خرید (0)

اشیاء در JavaScript

در JavaScript، هر چیزی می تواند یک شیء باشد: یک رشته، یک عدد، یک آرایه، یک تابع و ...

علاوه بر این، در JavaScript قابلیت تعریف اشیاد نیز وجود دارد.


اشیاء (Object) در JavaScript

Wiki

در JavaScript چندین شیء توکار (built-in) مانند: رشته، تاریخ، آرایه و ... وجود دارد.

یک شیء، تنها یک نوع خاص داده است و می تواند شامل property و method هایی باشد.


دسترسی به خصوصیاتِ (property) یک شیء

Wiki

اشیاء، به متغیرهای خاصی دسترسی دارند که به آنها property می گویند. (مقادیر وابسته به یک شیء)

 نحوه دسترسی به یک property:

objectName.propertyName

در مثال زیر، برای پیدا کردن طول رشته، از خصوصیت length استفاده شده است:

var message="Hello World!";
var x=message.length;

مقدار x، بعد از اجرای کد بالا:

12

دسترسی به متدهایِ (Method) یک شیء

Wiki

Method در واقع عملیاتی است که روی یک شیء اجرا می شود.

نحوه ی فراخوانی یک Method:

objectName.methodName()

در مثال زیر، با استفاده از متد ()toUpperCase حروف رشته "message"  حروف بزرگ تبدیل شده:

var message="Hello world!";
var x=message.toUpperCase();

مقدار x، بعد از اجرای کد بالا:

HELLO WORLD!

 ایجاد اشیاد در JavaScript

Wiki

در JavaScript، قابلیت تعریف اشیاد، وجود دارد.

برای ایجاد یک شیء دو روش مختلف وجود دارد:

  1. تعریف و ایجاد یک نمونه مستقیم از شیء
  2. تعریف شیء با استفاده از یک تابع به عنوان سازنده (Constractor) و سپس ایجاد یک نمونه جدید از شی

1- تعریف و ایجاد یک نمونه مستقیم از شیء

Wiki

در مثال زیر، یک نمونه مستقیم از یک شیء ایجاد شده و سپس چهار property به آن اضافه شده است:

مثال (اشیاء در JavaScript)

person=new Object();
person.firstname="John";
person.lastname="Doe";
person.age=50;
person.eyecolor="blue";
خودتان امتحان کنید »

کد بالا را می توان به صورت زیر نیز نوشت:

مثال (اشیاء در JavaScript)

person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};
خودتان امتحان کنید »

2- تعریف شیء با استفاده از یک تابع به عنوان سازنده (Constractor) و سپس ایجاد نمونه

Wiki

در مثال زیر، از یک تابع به عنوان سازنده برای ساخت شیء، استفاده شده است:

مثال (اشیاء در JavaScript)

function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
}
خودتان امتحان کنید »

کلمه کلیدی "this" در مثال بالا، به شیء ای که در دست است اشاره دارد.

ایجاد نمونه از یک شیء

Wiki

زمانی که سازنده ی شیء وجود داشته باشد، برای ایجاد نمونه، مانند زیر عمل نمایید:

var myFather=new person("John","Doe",50,"blue");
var myMother=new person("Sally","Rally",48,"green");

اضافه کردن Property به اشیاء

Wiki

این کار بسادگی دادن آن یک مقدار، به شی موجود است.

به فرض اینکه شیء person قبلاً وجود داشته باشد، می توانید propertyهای age ,lastname ,firstname و eyecolor را مانند زیر به آن اضافه کنید:

person.firstname="John";
person.lastname="Doe";
person.age=30;
person.eyecolor="blue";

x=person.firstname;

مقدار x، بعد از اجرای کد بالا:

John

اضافه کردن متدها (Method) به اشیاء

Wiki

متدها، توابعی هستند که به اشیاء ضمیمه شده اند.

تعریف متدهای یک شیء، داخل تابع سازنده (constructor) انجام می شود:

function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;

this.changeName=changeName;
function changeName(name)
{
this.lastname=name;
}
}

تابع ()changeName مقدار پارامتر ورودی name را به خصوصیت lastname اختصاص می دهد:

دسترسی به متد ()changeName

myMother=new person("Sally","Rally",48,"green");
myMother.changeName("Doe");
خودتان امتحان کنید »

JavaScript می داند که شیء personی که شما درباره آن صحبت می کنید کدام است، بنابراین در تابع سازنده، عبارت this با mymother جابه جا می شود.


کلاس ها در JavaScript

Wiki

JavaScript یک زبان شیء گرا (object oriented) است، اما از کلاس ها استفاده نمی کند.

در JavaScript کلاس تعریف نمی شود و همچنین از یک کلاس شیء ای ساخته نمی شود (مانند بیشتر زبان های شیء گرا).

JavaScript براساس یک نمونه اولیه است (prototype based) و از کلاس های استفاده نمی کند.


دستور for...in در JavaScript

Wiki

دستور for...in در JavaScript، داخل propertyهای یک شیء، حلقه می زند.

نحوه استفاده:

for (variable in object)
  {
  code to be executed
  }

توجه: کد داخل حلقه for...in، برای تک تک propertyهای شیء، اجرا خواهد شد.

مثال: حلقه زدن داخل propertyهای شی person:

مثال (اشیاء در JavaScript)

var person={fname:"John",lname:"Doe",age:25};

for (x in person)
  {
  txt=txt + person[x];
  }
خودتان امتحان کنید »

دیدگاه‌ها  

+2 # سینا اسماعیل پور 1395-03-20 16:49
سلام و خسته نباشد
در کد زیر مییشه بگین changename به چه دردی می خوره؟اگه فرا خوانی تابعه یکم توضیح بدید:
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;

this.changeName=changeName;
function changeName(name)
{
this.lastname=name;
}
}
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+3 # امیر پهلوان صادق 1395-03-24 08:18
سلام
همان طور که در مطلب بالا مطالعه فرمودید، در دنیای شیء گرایی، هر شیء می تواند دارای یک یا چند Property و همچنین یک یا چند Method باشد.
اما در اسکریبت مذکور ما قصد داشتیم تا با یک مثال بسیار ساده، نحوه ی استفاده از Method را توضیح دهیم، در واقع Method توابع مربوط به یک شیء هستند که یک کار بخصوص را انجام می دهند و بصورت زیر قابل صدا زدن هستند:objectName.methodName()
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+3 # سینا اسماعیل پور 1395-03-28 18:32
حرف شما صحیح و من این مطلب رو فهمیدم اما خط زیر دقیقا چه کاری انجام میده؟
this.changeName=changeName;
و ببخشید در باره اشیا یعنی هر متغییری یک شی است؟
و این نیز نوعی تعریف شی می باشد؟:
name=new Object()
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # امیر پهلوان صادق 1395-03-28 19:31
سلام مجدد
برای اضافه کردن متدها در جاواسکریپت به یکی از دو روش زیر می توانیم عمل کنیم
روش اول:
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;

this.changeName=function(name)
{
this.lastname=name;
}

}

روش دوم:
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;

this.changeName=changeName;
function changeName(name)
{
this.lastname=name;
}
}

بنابراین همانطور که متوجه شدید، در جاوا اسکریبت برای اضافه کردن متد ما مجبور هستیم از کلمه کلیدی this و سپس آنچه در بالا دیدید استفاده کنیم. در واقع اینکه چرا طراحان جاوااسکریبت اینگونه عمل کرده اند را باید از خودشون سوال کنید...!
قسمت دوم سوالتون: بله در جاوااسکریبت هر متغیری که تعریف می کنید یک شیء هست. لطفا توجه فرمایید بعد از اینکه اشیاء را در جاوا اکسریبت تعریف کردیم، باید از آنها استفاده کنیم...! در واقع با ساخت یک نمونه از آنها می توانیم به Propertyها و Methodهای شیء مورد نظر دسترسی داشته باشیم. یعنی کدی که در انتهای سوالتون مشخص کردید، نحوه ی ساخت یک نمونه از یک شیء دلخواه را مشخص می کند:
name=new Object()
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # فرید 1395-01-25 17:59
برام سخت بود؛ جی کوئری راه حل آسون تری ارائه نداده؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # مهرداد صلاحی 1395-01-29 09:35
راه حل برای چی؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # somaye12 1394-10-20 21:13
سلام خسته نباشید
توی این آموزش شما یک نمونه به اسم mymother از کلاس personایجاد کردید. و اونو مقدار دهی کردید.
من میخواسم بدونم آیا میشه واسه نمونه mymother دوبار مقداردهی انجام بدم
var myMother=new person(["Sally" ,"Rally",48,"gr een"],["Sara"," deo",20,"red"]) ;
یه چیزی مثل کد بالا
ممنون میشم ک زودی جوابمو بدین
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # مهرداد صلاحی 1395-01-29 09:34
با سلام و تشکر.
وقتی یه شی رو تعریف میکنید میتونید توسط اون شیء به متدهای اون کلاس دسترسی داشته باشید. حتی میتونید مقادیر خصوصیات متغیر رو در صورت نیاز تغییر بدید.
کد بالا mymother رو دوباره از کلاس موردنظر میسازه.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # ali_021 1394-04-30 13:52
سلام و خسته نباشید خدمت شما
من یک کدی نوشته ام که از فرد سه مقدار نام و سن و تلفن را میگیره توسط ابجکت
وقتی روی دکمه نمایش کلیک می کنم مقدار های وارد شده را متغیر تعریف نشده Undifiend میده در حالی که متغیرم سراسری هم هست اینم لینکش
http://codepen.io/prv/pen/YXOGEB
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+3 # احسان عباسی 1394-04-30 16:51
اینم کد مورد نظر، خدمت شما : codepen.io/sbaloot/pen/ZGMBdZ
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # امیرکیان 1393-12-15 11:37
پس بخاطر همین است که بهش میگن مدل شی گرایی
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن

آموزش صوتی JavaScript

بستن
مدرس:

ابزاری که در پیش روی دارید یکی از ابزارهای بسیار کاربردی سایت بیاموز در زمینه آموزش است، این ابزار برای سهولت یادگیری شما کاربران محترم طراحی شده است.

فقط کافی است روی عنوان پاراگراف مورد نظرتان کلیک کنید تا پخش صدا آغاز شود ...!