جاوا اسکریپت یک زبان شی گرا میباشد و زمانی که ما از شی گرائی صحبت میکنیم هر زبان برنامه نویسی باید حداقل موارد زیر را داشته باشد :
اشیا از attribute ها تشکیل شده اند . اگر یک attribute تابع باشد آنرا متد نام گذاری میکنند و در غیر این صورت آنرا یک ویژگی یا property برای شی تعریف میکنند .
خواص اشیا میتوانند هر نوع از سه نوع پیشین داده ها یا هر نوع داده ی انتزاعی باشند ، همانند شی دیگری .
خواص یک شی همان متغیرهای درون شی هستند که میتوانند درون متد ها استفاده شوند یا بصورت سراسری در آن صفحه استفاده شوند .
سینتکس استاندارد اضافه کردن یک خاصیت جدید به یک شی طبق کدهای زیر است
objectName.objectProperty = propertyValue;
برای مثال ، در شی document میتوانید به خاصیت title دسترسی داشته باشید . کد زیر را مشاهده کنید
var str = document.title;
متدها همان توابعی هستند که درون یک شی نوشته میشوند و یک عملی را انجام میدهند . تفاوت کوچکی بین توابع و متدها است . توابع بصورت مستقل عمل میکنند و هر جایی میتوان از انها استفاده کرد ولی متدها فقط درون یک شی هستند و با کلمه ی this به انها اشاره کرد .
متدها تقریبا برای هر چیزی کاربرد دارند . از نمایش محتویات ساده از درون شی ، روی صفحه ی نمایش گرفته تا انجام عمل های پیچیده ریاضی روی پارامترها ، خاصیت ها و متغیرهای درون یک شی را میتوان از کارهای انجام شده توسط متد ها محسوب کرد .
برای مثال - کد زیر مثال ساده ای است که نشان میدهد متد write() چطور یک متنی را شی document می نویسد :
document.write("This is test");
تمام اشیا که برنامه نویس آنها را برای خودش ایجاد میکند از فرزندان یک شی اصلی به نام Object محسوب میشود .
کلمه ی کلیدی new برای ساختن یک نمونه ی جدید از شی استفاده میشود . زمانی که شما یک نمونه ی جدید از یک شی میسازید . بعد از اجرای new ، بلافاصله نام متد سازنده را بنویسید .
در مثال های زیر متدهای Object() و Array() .Date و Date() متدهای سازنده هستند .همانطور که میبینید این متدها میتوانند پارامتر ورودی نیز قبول کنند .
var employee = new Object();
var books = new Array("C++", "Perl", "Java");
var day = new Date("August 15, 1947");
متد سازنده یک متد است مثل تمام متد ها ، ولی این متد زمانی که برای اولین بار نمونه ای از یک شی ساخته میشود اجرا میشود و ممکن است کاری را به انجام برساند .
جاوا اسکریپت یک متد سازنده ی ویژه را فراهم کرده است که برای ساخت یک شی استفاده میشود و نام ان Object() میباشد .
مقدار بازگشی Object() به یک متغیر اختصاص داده میشود . یک متغیر که به شی ساخته شده اشاره میکند و توجه کنید که متغیرهای چسبیده به یک شی ساخته شده متغیر معمولی نیستند که با کلمه ی کلیدی var شناخته شوند .
در مثال زیر تمام این موارد را میتوانید ببینید و تست کنید .
<html>
<head>
<title>User-defined objects</title>
<script type = "text/javascript">
var book = new Object(); // Create the object
book.subject = "Perl"; // Assign properties to the object
book.author = "Mohtashim";
</script>
</head>
<body>
<script type = "text/javascript">
document.write("Book name is : " + book.subject + "<br>");
document.write("Book author is : " + book.author + "<br>");
</script>
</body>
</html>
خروجی :
Book name is : Perl
Book author is : Mohtashim
مثال دوم :
در این مثال شما میبینید که چطور میتوانید یک شی با متد شخصی بسازید . اینجا کاربرد کلمه ی this که پیش تر گفتیم را میتوانید ببینید که به شی ای که درون آن متد شخصی است اشاره میکند
<html>
<head>
<title>User-defined objects</title>
<script type = "text/javascript">
function book(title, author) {
this.title = title;
this.author = author;
}
</script>
</head>
<body>
<script type = "text/javascript">
var myBook = new book("Perl", "Mohtashim");
document.write("Book title is : " + myBook.title + "<br>");
document.write("Book author is : " + myBook.author + "<br>");
</script>
</body>
</html>
خروجی :
Book title is : Perl
Book author is : Mohtashim
در مثال قبلی شما دیدید که چطور سازنده یک شی جدید ساخت ولی ما قصد داریم یک شی کامل به همراه متد های آن ایجاد کنیم
کدهای زیر را تمرین کنید این کدها به شما نشان میدهد که چطور متدی را به شی ای اضافه کنید
<html>
<head>
<title>User-defined objects</title>
<script type = "text/javascript">
// Define a function which will work as a method
function addPrice(amount) {
this.price = amount;
}
function book(title, author) {
this.title = title;
this.author = author;
this.addPrice = addPrice; // Assign that method as property.
}
</script>
</head>
<body>
<script type = "text/javascript">
var myBook = new book("Perl", "Mohtashim");
myBook.addPrice(100);
document.write("Book title is : " + myBook.title + "<br>");
document.write("Book author is : " + myBook.author + "<br>");
document.write("Book price is : " + myBook.price + "<br>");
</script>
</body>
</html>
خروجی :
Book title is : Perl
Book author is : Mohtashim
Book price is : 100
کلمه ی کلیدی with ، نوعی اشاره گر به خواص و متدهای یک شی میباشد .
هر شی که بعنوان یک آرگومان به with ارسال شود بعنوان شی پیشفرض برای یک بلاک خاصی که درون {} قرار میگیرد تعریف میشود .
خواص و متدهای درون یک شی میتواند بدون نام گذاری برای شی ، مورد استفاده قرار گیرند .
سینتکس استفاده ی صحیح از with در زیر امده است
with (object) {
properties used without the object name and dot
}
مثال کاربردی :
<html>
<head>
<title>User-defined objects</title>
<script type = "text/javascript">
// Define a function which will work as a method
function addPrice(amount) {
with(this) {
price = amount;
}
}
function book(title, author) {
this.title = title;
this.author = author;
this.price = 0;
this.addPrice = addPrice; // Assign that method as property.
}
</script>
</head>
<body>
<script type = "text/javascript">
var myBook = new book("Perl", "Mohtashim");
myBook.addPrice(100);
document.write("Book title is : " + myBook.title + "<br>");
document.write("Book author is : " + myBook.author + "<br>");
document.write("Book price is : " + myBook.price + "<br>");
</script>
</body>
</html>
خروجی :
Book title is : Perl
Book author is : Mohtashim
Book price is : 100
. اتمام .
محصولات برگزیده مناسب شما
دوره ی آموزش ویوجی اس ( Vuejs 3) پروژه محور به همراه Nuxt js دوره ی آموزش جاوااسکریپت-صفرتاصد کارگاه آموزشی کار با Grunt js