جاوا اسکریپت یک زبان برنامه نویسی شی گراست (آبجکت) . در صورتی که یک زبان برنامه نویسی بتواند ۴ توانایی اصلی را برای توسعه دهنده ها مهیا سازد، شی گرا نامیده می شود:
آبجکتها (Object )، ترکیبی از ویژگی ها هستند. اگر یک ویژگی حاوی یک تابع باشد بصورت یک متد از شیء فرض می شود. در غیر این صورت یک صفت خاص است.
مشخصات Object (شیء) می تواند هرکدام از سه نوع داده اولیه یا هرکدام از انواع داده انتزاعی باشد. مشخصات Object معمولا متغیرهایی هستند که ذاتا در متدهای شیء استفاده می شوند، اما می توانند متغیرهای نمایانی باشند که در کل صفحه نیز استفاده می شوند.
سینتکس اضافه کردن یک ویژگی خاص به یک object:
objectName.objectProperty = propertyValue;
به عنوان مثال کد زیر نام سند را با استفاده از ویژگی “title” از شیء document دریافت می کند.
var str = document.title;
متدها توابعی هستند که اجازه می دهد آبجکت عملی انجام داده یا اجازه می دهد بعضی اعمال روی آن صورت گیرد. تفاوت کوچکی میان متد و تابع وجود دارد، تابع یک واحد مستقل از دستورات است و متد ضمیمه یک شیء می شود و می تواند توسط کلمه کلیدی this به آن رجوع شود.
متدها برای همه چیز قابل استفاده هستند، از نمایش محتوی شیء روی صفحه تا اجرای عملیات پیچیده ریاضی در یک گروه از ویژگی های بومی و پارامترها.
به عنوان مثال، نمونه ساده روش استفاده از متد write() از شیء document برای نوشتن محتوی در سند نشاده داده شده است:
document.write("This is test");
تمام اشیایی که توسط کاربر تعریف می شوند (user-defined) و Object های داخلی (built-in)، همه از نسل یک شیء به نام Object هستند.
عملگر new برای ایجاد نمونه ای از یک آبجکت استفاده می شوند.عملگر new قبل از متد constructor (سازنده) می آید.
در مثال زیر متدهای سازنده Object(), Array(), and Date(). هستند. این متدها جزو توابع داخلی جاوا اسکریپت هستند.
var employee = new Object(); var books = new Array("C++", "Perl", "Java"); var day = new Date("August 15, 1947");
یک سازنده تابعی است که object را ایجاد و ارزش گذاری اولیه می کند. جاوا اسکریپت یک تابع سازنده ویژه به نام 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
مثال های قبل روش ایجاد object توسط سازنده و تخصیص مشخصات را شرح میداد. ولی لازم است تعریف یک object توسط تخصیص متد ها به آن را کامل کنیم.
مثال:
مثال زیر نشان میدهد چطور یک تابع را همراه یک object اضافه کنیم:
<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 شیء پیش فرض برای طول بلوکی از کد را تشکیل می دهد که در آن قرار دارد. مشخصات و متدها برای object می توانند بدون نامگذاری شیء استفاده شوند.
سینتکس:
قواعد نوشتاری شیء 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
جاوا اسکریپت دارای چندین object داخلی و بومی است. این object ها همه جا در برنامه شما قابل دسترس هستند و در مروگر هر سیستم عاملی به روشی یکسان کار میکنند.
در اینجا فهرستی از مهمترین object های بومی جاوا اسکریپت آورده شده: