تفاوت میان نسخههای «JavaScript:اشیاء (object) در جاوااسکریپت»
(۱۶ نسخهٔ میانیِ همین کاربر نمایش داده نشده است) | |||
سطر ۱: | سطر ۱: | ||
+ | {{منو عمودی جاوااسکریپت}} | ||
==اشیاء دنیای واقعی، ویژگیها و متدها== | ==اشیاء دنیای واقعی، ویژگیها و متدها== | ||
− | در زندگی واقعی، اتومبیل یک '''شیء''' است. | + | در زندگی واقعی، اتومبیل یک '''شیء''' است. <ref>[https://www.w3schools.com/js/js_objects.asp w3schools.com: JavaScript Objects]</ref> |
یک اتومبیل '''ویژگی'''هایی مانند: وزن و رنگ دارد و '''متدها''' یا رفتارهایی مانند روشن شدن و خاموش شدن دارد: | یک اتومبیل '''ویژگی'''هایی مانند: وزن و رنگ دارد و '''متدها''' یا رفتارهایی مانند روشن شدن و خاموش شدن دارد: | ||
− | {| class="wikitable" style="width: | + | {| class="wikitable" style="width: auto;" |
! style="background:#D0ECE7;" width="20%" |شیء | ! style="background:#D0ECE7;" width="20%" |شیء | ||
! style="background:#D0ECE7;" width="5%" |ویژگی | ! style="background:#D0ECE7;" width="5%" |ویژگی | ||
سطر ۲۷: | سطر ۲۸: | ||
تمامی اتومبیلها '''رفتارها یا متدهای''' یکسانی دارند، اما متدها در هر اتومبیل در '''زمانهای متفاوتی''' اجرا میشوند. | تمامی اتومبیلها '''رفتارها یا متدهای''' یکسانی دارند، اما متدها در هر اتومبیل در '''زمانهای متفاوتی''' اجرا میشوند. | ||
− | == | + | ==اشیاء در جاوااسکریپت== |
شما تا الان یادگرفتید که متغیرها در جاوااسکریپت محلهایی برای ذخیره انواع داده هستند. | شما تا الان یادگرفتید که متغیرها در جاوااسکریپت محلهایی برای ذخیره انواع داده هستند. | ||
سطر ۳۵: | سطر ۳۶: | ||
var car = "Fiat"; | var car = "Fiat"; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
اشیاء هم متغیر هستند، اما اشیاء میتوانند چندین مقدار داشته باشند. | اشیاء هم متغیر هستند، اما اشیاء میتوانند چندین مقدار داشته باشند. | ||
سطر ۴۶: | سطر ۴۵: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | این مقادیر به صورت ''' | + | این مقادیر به صورت '''نام:مقدار''' {{به انگلیسی|name:value}}، نوشته میشوند (نام و مقدار به وسیلهٔ یک{{قلم رنگ|سبز| |<nowiki>:</nowiki>}} از یکدیگر جدا میشوند). |
{{note|اشیاء در جاوااسکریپت محلی برای ذخیرهٔ '''مقادیر نام دار''' که ویژگی {{به انگلیسی|properties}} یا متد یا رفتار نامیده میشوند، استفاده میشود. | {{note|اشیاء در جاوااسکریپت محلی برای ذخیرهٔ '''مقادیر نام دار''' که ویژگی {{به انگلیسی|properties}} یا متد یا رفتار نامیده میشوند، استفاده میشود. | ||
سطر ۵۸: | سطر ۵۷: | ||
var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}; | var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}; | ||
− | </syntaxhighlight> | + | </syntaxhighlight> |
− | فاصلههای خالی و فاصلهٔ بین خطوط در هنگام تعریف شیء در جاوااسکریپت اهمیتی ندارند. تعریف | + | فاصلههای خالی و فاصلهٔ بین خطوط در هنگام تعریف شیء در جاوااسکریپت اهمیتی ندارند. تعریف شیء میتواند در چندین خط صورت بپذیرد: |
===مثال=== | ===مثال=== | ||
سطر ۷۳: | سطر ۷۲: | ||
==ویژگیهای اشیاء== | ==ویژگیهای اشیاء== | ||
− | + | در جاوااسکریپت به ترکیب مقادیر به صورت '''نام:مقدار''' {{به انگلیسی|name:value}}، '''ویژگی''' گفته میشود: | |
− | + | {| class="wikitable" style="width: 60%;" | |
− | + | ! style="background:#D0ECE7;" width="15%" |ویژگی | |
− | + | ! style="background:#D0ECE7;" width="30%" |مقدار ویژگی | |
− | در جاوااسکریپت به ترکیب مقادیر به صورت''' | ||
− | {| class="wikitable" style="width: | ||
− | ! | ||
− | ! | ||
|- | |- | ||
|Firstname یا نام | |Firstname یا نام | ||
سطر ۹۴: | سطر ۸۹: | ||
|آبی | |آبی | ||
|} | |} | ||
− | {| class="wikitable" | + | ==دسترسی به ویژگیهای یک شیء== |
− | |ویژگی | + | شما میتوانید به ویژگیهای یک شیء به دو روش دسترسی پیدا کنید: |
− | |مقدار ویژگی | + | |
+ | <syntaxhighlight lang="javascript"> | ||
+ | objectName.propertyName | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===مثال=== | ||
+ | <syntaxhighlight lang="javascript"> | ||
+ | person.lastName; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | یا | ||
+ | |||
+ | <syntaxhighlight lang="javascript"> | ||
+ | objectName["propertyName"] | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===مثال=== | ||
+ | <syntaxhighlight lang="javascript"> | ||
+ | person["lastName"]; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==متدهای شیء== | ||
+ | اشیا نیز '''متدهایی''' دارند. | ||
+ | |||
+ | متدها '''اعمالی''' هستند که میتوان روی اشیاء انجام داد. | ||
+ | |||
+ | تعریف متدها به صورت ویژگی در اشیاء ذخیره میشوند. | ||
+ | {| class="wikitable" style="width: 70%;" | ||
+ | ! style="background:#D0ECE7;" width="15%" |ویژگی | ||
+ | ! style="background:#D0ECE7;" width="50%" |مقدار ویژگی | ||
|- | |- | ||
− | |Firstname یا نام | + | |Firstname یا نام |
− | |John | + | | style="direction:ltr;" |John |
|- | |- | ||
|Lastname یا نام خانوادگی | |Lastname یا نام خانوادگی | ||
− | |Doe | + | | style="direction:ltr;" |Doe |
|- | |- | ||
|Age یا سن | |Age یا سن | ||
|۵۰ | |۵۰ | ||
|- | |- | ||
− | |Eyecolor یا رنگ چشم | + | |Eyecolor یا رنگ چشم |
|آبی | |آبی | ||
+ | |- | ||
+ | |نام کامل | ||
+ | | style="direction:ltr;" |function() {return this.firstName + " " + this.lastName;} | ||
|} | |} | ||
+ | {{نکته|type=|image=[[Image:OOjs_UI_icon_lightbulb-yellow.svg|38px]]|text=یک متد یک تابع است که به صورت یک ویژگی ذخیره شده است.}} | ||
− | == | + | ===مثال=== |
− | + | <syntaxhighlight lang="javascript"> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
var person = { | var person = { | ||
− | + | firstName: "John", | |
− | + | lastName : "Doe", | |
− | + | id : 5566, | |
− | + | fullName : function() { | |
− | + | return this.firstName + " " + this.lastName; | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | } | ||
− | |||
}; | }; | ||
+ | </syntaxhighlight> | ||
− | == | + | ==کلمه کلیدی this== |
− | + | در یک تابع، کلمهٔ کلیدی{{Code|code=this|lang=css}}به «صاحب» تابع اشاره میکند. | |
− | + | در مثال بالا، {{Code|code=this|lang=css}}به '''شیء person''' اشاره دارد که صاحب تابع{{Code|code=fullname|lang=css}}است. | |
− | + | به معنای دیگر، {{Code|code=this.firstName|lang=css}}به این معنی است که{{Code|code=firstname|lang=css}}ویژگیای از '''این شیء''' است. | |
− | + | شما میتوانید مطالب بیشتری را در مورد کلمه کلیدی{{Code|code=this|lang=css}}در فصل [[کلمه کلیدی this در جاوااسکریپت]] بخوانید. | |
− | + | ==دسترسی به متدها یا رفتارهای یک شیء== | |
− | |||
− | + | You access an object method with the following : | |
− | + | شما میتوانید به متد یک شیء به شیوهٔ {{به انگلیسی|syntax}} زیر دسترسی پیدا کنید:<syntaxhighlight lang="javascript"> | |
+ | objectName.methodName() | ||
+ | </syntaxhighlight> | ||
− | + | ===مثال=== | |
− | + | <syntaxhighlight lang="javascript"> | |
− | == | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
name = person.fullName(); | name = person.fullName(); | ||
+ | </syntaxhighlight>اگرشما از یک متد '''بدون''' پرانتز () استفاده کنید، این امر موجب خواهد شد تا '''کدهای تابع''' به عنوان خروجی به شما بازگردانده شود: | ||
− | + | ===مثال=== | |
− | + | <syntaxhighlight lang="javascript"> | |
− | |||
− | |||
− | === | ||
name = person.fullName; | name = person.fullName; | ||
+ | </syntaxhighlight> | ||
− | == | + | ==رشتههای متنی، اعداد و بولینها را به صورت شیء تعریف نکنید.!== |
− | رشتههای متنی، اعداد | ||
− | |||
− | |||
− | |||
− | |||
+ | زمانی که شما یک متغیر در جاوااسکریپت را با کلمهٔ کلیدی "{{Code|code=new|lang=css}}" تعریف میکنید، این متغیر به صورت یک شیء {{به انگلیسی|object}} تعریف میشود:<syntaxhighlight lang="javascript"> | ||
var x = new String(); // Declares x as a String object | var x = new String(); // Declares x as a String object | ||
− | |||
var y = new Number(); // Declares y as a Number object | var y = new Number(); // Declares y as a Number object | ||
− | |||
var z = new Boolean(); // Declares z as a Boolean object | var z = new Boolean(); // Declares z as a Boolean object | ||
+ | </syntaxhighlight> | ||
+ | بهتر است که از تعریف اشیای از نوع رشتهای یا متنی{{Code|code=String|lang=css}}، از نوع عددی{{Code|code=Number|lang=css}}و بولین{{Code|code=Boolean|lang=css}} جلوگیری کنید. این امر موجب پیچیدهتر شدن کدها میشود و سرعت اجرای کد شما را نیز کم میکند. | ||
− | + | {{نکته|type=|image=[[Image:OOjs_UI_icon_lightbulb-yellow.svg|38px]]|text=شما در فصول آینده مطالب بیشتری را در مورد اشیاء در این آموزش خواهید آموخت.}} | |
− | |||
− | |||
− | |||
− | |||
− | + | ==منابع آموزشی== | |
+ | {{پانویس|چپچین=بله}} | ||
+ | {{منو افقی جاوااسکریپت}} | ||
+ | <references /> |
نسخهٔ ۱۵ آبان ۱۳۹۸، ساعت ۱۸:۱۱
محتویات
اشیاء دنیای واقعی، ویژگیها و متدها
در زندگی واقعی، اتومبیل یک شیء است. [۱]
یک اتومبیل ویژگیهایی مانند: وزن و رنگ دارد و متدها یا رفتارهایی مانند روشن شدن و خاموش شدن دارد:
شیء | ویژگی | متد یا رفتار |
---|---|---|
![]() |
car.name=fiat | car.start() |
car.model=500 | car.drive() | |
car.weight=850kg | car.brake() | |
car.color=white | car.stop() |
اتومبیلها ویژگیهای یکسانی دارند، اما مقادیر ویژگیها در هر اتومبیل متفاوت از سایر اتومبیلها است.
تمامی اتومبیلها رفتارها یا متدهای یکسانی دارند، اما متدها در هر اتومبیل در زمانهای متفاوتی اجرا میشوند.
اشیاء در جاوااسکریپت
شما تا الان یادگرفتید که متغیرها در جاوااسکریپت محلهایی برای ذخیره انواع داده هستند.
کد زیر، یک متغیر با نام car را با مقدار ساده (fiat) مقدار دهی میکند:
var car = "Fiat";
اشیاء هم متغیر هستند، اما اشیاء میتوانند چندین مقدار داشته باشند.
کد زیر یک متغیر با نام car را با چندین مقدار (fiat، ۵۰۰، سفید (به انگلیسی: White) مقداردهی میکند.
var car = {type:"Fiat", model:"500", color:"white"};
این مقادیر به صورت نام:مقدار (به انگلیسی: name:value)، نوشته میشوند (نام و مقدار به وسیلهٔ یک : از یکدیگر جدا میشوند).
تعریف شیء در جاوااسکریپت
شما میتوانید یک شیء را همانند مثال زیر تعریف کنید. (یا بسازید)
مثال
var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
فاصلههای خالی و فاصلهٔ بین خطوط در هنگام تعریف شیء در جاوااسکریپت اهمیتی ندارند. تعریف شیء میتواند در چندین خط صورت بپذیرد:
مثال
var person = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};
ویژگیهای اشیاء
در جاوااسکریپت به ترکیب مقادیر به صورت نام:مقدار (به انگلیسی: name:value)، ویژگی گفته میشود:
ویژگی | مقدار ویژگی |
---|---|
Firstname یا نام | John |
Lastname یا نام خانوادگی | Doe |
Age یا سن | ۵۰ |
Eyecolor یا رنگ چشم | آبی |
دسترسی به ویژگیهای یک شیء
شما میتوانید به ویژگیهای یک شیء به دو روش دسترسی پیدا کنید:
objectName.propertyName
مثال
person.lastName;
یا
objectName["propertyName"]
مثال
person["lastName"];
متدهای شیء
اشیا نیز متدهایی دارند.
متدها اعمالی هستند که میتوان روی اشیاء انجام داد.
تعریف متدها به صورت ویژگی در اشیاء ذخیره میشوند.
ویژگی | مقدار ویژگی |
---|---|
Firstname یا نام | John |
Lastname یا نام خانوادگی | Doe |
Age یا سن | ۵۰ |
Eyecolor یا رنگ چشم | آبی |
نام کامل | function() {return this.firstName + " " + this.lastName;} |
![]() | یک متد یک تابع است که به صورت یک ویژگی ذخیره شده است. |
مثال
var person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
کلمه کلیدی this
در یک تابع، کلمهٔ کلیدیthis
به «صاحب» تابع اشاره میکند.
در مثال بالا، this
به شیء person اشاره دارد که صاحب تابعfullname
است.
به معنای دیگر، this.firstName
به این معنی است کهfirstname
ویژگیای از این شیء است.
شما میتوانید مطالب بیشتری را در مورد کلمه کلیدیthis
در فصل کلمه کلیدی this در جاوااسکریپت بخوانید.
دسترسی به متدها یا رفتارهای یک شیء
You access an object method with the following :
شما میتوانید به متد یک شیء به شیوهٔ (به انگلیسی: syntax) زیر دسترسی پیدا کنید:
objectName.methodName()
مثال
name = person.fullName();
اگرشما از یک متد بدون پرانتز () استفاده کنید، این امر موجب خواهد شد تا کدهای تابع به عنوان خروجی به شما بازگردانده شود:
مثال
name = person.fullName;
رشتههای متنی، اعداد و بولینها را به صورت شیء تعریف نکنید.!
زمانی که شما یک متغیر در جاوااسکریپت را با کلمهٔ کلیدی "new
" تعریف میکنید، این متغیر به صورت یک شیء (به انگلیسی: object) تعریف میشود:
var x = new String(); // Declares x as a String object
var y = new Number(); // Declares y as a Number object
var z = new Boolean(); // Declares z as a Boolean object
بهتر است که از تعریف اشیای از نوع رشتهای یا متنیString
، از نوع عددیNumber
و بولینBoolean
جلوگیری کنید. این امر موجب پیچیدهتر شدن کدها میشود و سرعت اجرای کد شما را نیز کم میکند.
![]() | شما در فصول آینده مطالب بیشتری را در مورد اشیاء در این آموزش خواهید آموخت. |
منابع آموزشی