شنبه ۲۹ دي ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

آموزش جاوا اسکریپت - بررسی اجمالی اشیاء

جاوااسکریپت یک زبان برنامه‌نویسی شی‌گرا (OOP) است. زبان برنامه‌نویسی می‌تواند شی‌گرا نامیده شود، اگر چهار قابلیت اصلی را برای توسعه‌دهندگان فراهم کند:

  • تجزیه و ترکیب (Encapsulation) - قابلیت ذخیره اطلاعات مرتبط، آنچه که داده یا متد هستند، در یک شیء.

  • تجمیع (Aggregation) - قابلیت ذخیره یک شیء داخل یک شیء دیگر.

  • ارث‌بری (Inheritance) - قابلیت یک کلاس برای وابستگی به یک کلاس دیگر (یا تعدادی از کلاس‌ها) برای برخی از خصوصیات و متدهای خود.

  • چندریختی (Polymorphism) - قابلیت نوشتن یک تابع یا متد که به چندین روش مختلف کار می‌کند.

اشیاء از ویژگی‌ها (Attributes) تشکیل شده‌اند. اگر یک ویژگی شامل یک تابع باشد، آن را به عنوان یک متد اشیاء در نظر گرفته می‌شود، در غیر اینصورت، ویژگی به عنوان یک خاصیت محسوب می‌شود.

ویژگی‌های اشیاء (Object Properties)

ویژگی‌های اشیاء (Object Properties) می‌توانند هر یک از سه نوع داده ابتدایی یا هر یک از نوع داده‌های انتزاعی، مانند یک شی دیگر باشند. ویژگی‌های اشیاء معمولاً متغیرهایی هستند که درون متدهای شیء استفاده می‌شوند، اما همچنین می‌توانند متغیرهایی دیده‌پذیر به صورت سراسری باشند که در سراسر صفحه استفاده می‌شوند.

دستورالعمل افزودن یک ویژگی به یک شی به شکل زیر است:


objectName.objectProperty = propertyValue;

برای مثال - کد زیر با استفاده از ویژگی "title" شی document، عنوان سند را دریافت می‌کند.


var str = document.title;

متدهای اشیاء (Object Methods)

متدها (Methods) توابعی هستند که به شیء امکان انجام کاری را می‌دهند یا به شیء اجازه می‌دهند تا به آن کاری انجام شود. تفاوت کوچکی بین یک تابع و یک متد وجود دارد - در حالی که یک تابع یک واحد مستقل از دستورات است، یک متد به یک شیء متصل است و می‌تواند با استفاده از کلمه کلیدی this مرجع داده شود.

متدها برای همه چیز از نمایش محتوای شیء در صفحه تا انجام عملیات ریاضی پیچیده بر روی یک گروه از ویژگی‌های محلی و پارامترها مفید هستند.

برای مثال - کد زیر نمونه‌ای ساده را نشان می‌دهد که نحوه استفاده از متد write() شیء document را برای نوشتن محتوای دلخواه در سند نشان می‌دهد.


document.write("This is test");

اشیاء تعریف شده توسط کاربر

تمام اشیاء تعریف شده توسط کاربر و اشیاء ساخته شده به صورت پیش‌فرض، نوادگان یک شی به نام Object هستند.

اپراتور new

اپراتور new برای ایجاد یک نمونه از یک شی استفاده می‌شود. برای ایجاد یک شی، پس از اپراتور new، متد سازنده نوشته می‌شود.

در مثال زیر، متدهای سازنده Object()، Array() و Date() هستند. این سازنده‌ها توابع جاوااسکریپت پیش‌فرض هستند.


var employee = new Object();
var books = new Array("C++", "Perl", "Java");
var day = new Date("August 15, 1947");

سازنده Object()

سازنده یا constructor، یک تابع است که یک شیء را ایجاد و مقداردهی اولیه می‌کند. جاوااسکریپت یک تابع سازنده خاص به نام Object() برای ساخت شیء ارائه می‌دهد. مقدار برگشتی از سازنده Object() به یک متغیر اختصاص داده می‌شود.

متغیر یک ارجاع به شیء جدید را شامل می‌شود. خصوصیت‌های اختصاص داده شده به شیء، متغیرها نیستند و با استفاده از کلمه کلیدی var تعریف نمی‌شوند.

مثال 1

مثال زیر را امتحان کنید؛ آن راه‌اندازی ایجاد شیء را نشان می‌دهد.


<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 برای شی به صورت زیر است −


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

اشیای اصلی جاوااسکریپت

جاوااسکریپت چندین شیء از پیش ساخته شده یا Native Object دارد. این اشیاء در هر جای برنامه شما قابل دسترسی هستند و در هر مرورگری که در هر سیستم عاملی اجرا می‌شود به همان شیوه کار خواهند کرد.

در ادامه لیستی از اشیای اصلی جاوااسکریپت آمده است: