آموزش جاوااسکریپت – جلسه سی و سوم: ساخت اشیاء
شایاء برای سازماندهی به اطلاعات بسیار مفید هستند.
مترجم: در اینجا نمی خواهی زیاد وارد مبحث OOP در جاوااسکریپت شویم فقط در حد آشنایی شما با نحوه ساختن اشیا در جاوااسکریپت و استفاده از آنها کفایت می کنیم. مبحث Object Oriented در جاوااسکریپت خود مبحث جداگانه است که به بیش از این تعداد جلسات نیازمند است.
اسن جلسه را با دو مثال شروه می کنیم.
مثال1: ساخت یک نمونه (Instance) مستقیم از یک شیء
کد:
<html>
<body>
<script type="text/javascript">
personObj={firstname:"John",lastname:"Doe",age:50, eyecolor:"blue"}
document.write(personObj.firstname + " is " + personObj.age + " years old.");
</script>
</body>
</html>
که خروجی آن به صورت زیر است:
کد:
John is 50 years old.
مثال 2: ساخت یک الگو (template) برای یک شیء:
کد:
<html>
<body>
<script type="text/javascript">
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
}
myFather=new person("John","Doe",50,"blue");
document.write(myFather.firstname + " is " + myFather.age + " years old.");
</script>
</body>
</html>
که خروجی این مثال هم به همان صورت بالاست.
اشیای جاوااسکریپت
در جلسات قبل دیدیم که جاوااسکریپت یک سری اشیای داخلی برای خود دارد مثال Strint ،Date ، Array و ...علاوه بر این اشیای درونی شما می توانید اشیای خودتان را هم بسازید.
یک شیء تنها نوع خاصی از داده هاست مه شامل مجموعه ای از خصوصیات (properties) و متدها (methods) است.
بگذارید با یک مثال شرع کنیم:
یک شخص (Person) یک شیء است. خصوصیات مقادیری است که با شیء وابسته شده اند. خصوصیات شخص عبارتند از نام، قد، وزن، رنگ پوست، زنگ چشم و ... تمام اشخاص اسن خصوصیات را دارند ولی مقادیر این خصوصیات از شخصی به شخص دیگر فرق می کند. اشیا متدهایی هم دارند. متدها اعمالی هستند که می توانند توسط یک شخص صورت گیرند. متدهای شخص می توان شامل eat()، sleep()، work()، play() و ... باشد.
خصوصیات (Properties)
دستور نحوی برای دستیابی به خصئصیات یک شیأ به صورت زیر است:
کد:
objName.propName
شما می توانید به راحتی با مقدار دادن یک خصوصیت آن خصوصیت را به شیء اضافه کنید. فرض کنید که personObj در حال حاضر ساخته شده و وجود دارد.شما می توانید خصوصیاتی با نامهای firstname، lastname، age و eyecolor را به صورتی که در زیر نشان داده شده به آن نسبت دهید:
کد:
personObj.firstname="John";
personObj.lastname="Doe";
personObj.age=30;
personObj.eyecolor="blue";
document.write(personObj.firstname);
که نتیجه کد بالا به صورت زیر است:
کد:
John
متدها (Methods):
یک شیء می توان شامل متد هم باشد.
با استفاده از دستور زیر می توانید به متدهای یک شیء دسترسی داشه باشید:
کد:
objName.methodName()
نکته: پارامترهای متد را باید داخل پرانتزها به آن ارسال نمایید اگر بخواهید متد sleep() را به شیء personObj نسبت دهید به صورت زیر عمل کنید.
کد:
personObj.sleep();
ساخت شیء خودتان:
راه های یادی برای ساخت اشیاء وحود دارد:
1- ساخت یک نمونه مستقیم از یک شیء
کدهای زیر یک نمونه مستقیم از یک شیء می سازد و 4 خصوصیت را به آن نسبت می دهد:
کد:
personObj=new Object();
personObj.firstname="John";
personObj.lastname="Doe";
personObj.age=50;
personObj.eyecolor="blue";
راه حل دیگر (استفده از لیترال های شیء):
کد:
personObj={firstname:"John",lastname:"Doe",age:50, eyecolor:"blue"};
افزودن یک متد به شیء هم بسیار ساده است. مثال زیر یک متد به نام eat() به personObj اضافه می کند:
کد:
personObj.eat=eat;
2- ایجاد یک سازنده ی شیء:
ساخت یک تابع که یک شی ء را بسازد:
کد:
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
}
در داخل تابع شما باید از دستور this.propertyName استفاده کنید. دلیل استفاده از این this ها اسن است که شما در هر لحظه بیش از یک شخص دارید (و اشخاصی که شما دارید بر روی آن ها کار می کنید باید مشخص باشند). دلیل استفاده از “this” این است که: یک نمونه از شیء در دسترس باشد.
حالا که شما یک سازنده شیء دارید می توانید نمونه های جدیدی از روی آن بسازید به صورت زیر:
کد:
var myFather=new person("John","Doe",50,"blue");
var myMother=new person("Sally","Rally",48,"green");
ضمناً شما می توانید متدهایی را به شیء شخص نسبت دهید. این کارها هم در داخل تابع انجام می شود:
کد:
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
this.newlastname=newlastname;
}
دقت کنید متدها فقط به اشیاء متصل می شوندو بعداً ما باید تابع newlastname را برایش بنویسیم تا بتوانیم از آن استفاده کنیم.
کد:
function newlastname(new_lastname)
{
this.lastname=new_lastname;
}
این تابع نام خانوادگی جدید شیء شخص را تعریف می کند و آن ا به شخص نسبت می دهد. جاوااسکریپت با استفاده از کلمه this متوجه می شود که شما دارید درباره کدام شخص صحبت می کند. بنابراین شما اکنون می توانید بنویسید:
کد:
myMother.newlastname("Doe")
علاقه مندی ها (Bookmarks)