JavaScript:سازنده‌های شیء در جاوااسکریپت

از ویکی کد
پرش به ناوبری پرش به جستجو
دورهٔ آموزشی جاوااسکریپت
Javascript.jpg
جاوااسکریپت
موارد آموزشی
۱آموزش جاوااسکریپت
۲مقدمه‌ای بر جاوااسکریپت
۳JavaScript:قوانین و اصول اولیه زبان جاوااسکریپت
۴JavaScript:خروجی جاوااسکریپت
۵JavaScript:عبارت‌ها در جاوااسکریپت
۶JavaScript:شیوهٔ نوشتن (Syntax) عبارات یا دستورات در جاوااسکریپت
۷JavaScript:نظرات یا کامنت‌ها (Comments) در جاوااسکریپت
۸JavaScript:متغیرها در جاوااسکریپت
۹JavaScript:عملگرهای جاوااسکریپت
۱۰JavaScript:عملگرهای ریاضی در جاوااسکریپت
۱۱JavaScript:عملگرهای مقداردهی در جاوااسکریپت
۱۲JavaScript:انواع داده‌ها در جاوااسکریپت
۱۳JavaScript:توابع در جاوااسکریپت
۱۴JavaScript:اشیاء (object) در جاوااسکریپت
۱۵JavaScript:رویدادها در جاوااسکریپت
۱۶JavaScript:رشته‌های متنی (string) در جاوااسکریپت
۱۷JavaScript:متدهای نوع داده متنی یا رشته‌ای در جاوااسکریپت
۱۸JavaScript:اعداد در جاوااسکریپت
۱۹JavaScript:متدهای داده‌های عددی در جاوااسکریپت
۲۰JavaScript:آرایه‌ها در جاوااسکریپت
۲۱JavaScript:متدهای آرایه در جاوااسکریپت
۲۲JavaScript:مرتب‌سازی آرایه‌ها در جاوااسکریپت
۲۳JavaScript:متدهای پیمایش آرایه در جاوااسکریپت
۲۴JavaScript:اشیاء تاریخ و زمان در جاوااسکریپت
۲۵JavaScript:فرمت‌های تاریخ و زمان در جاوااسکریپت
۲۶JavaScript:متدهای دریافت تاریخ و زمان در جاوااسکریپت
۲۷JavaScript:متدهای تنظیم زمان و تاریخ در جاوااسکریپت
۲۸JavaScript:شی ریاضی (Math) در جاوااسکریپت
۲۹JavaScript:ایجاد عدد تصادفی در جاوااسکریپت
۳۰JavaScript:مقادیر بولین (Booleans) در جاوااسکریپت
۳۱JavaScript:عملگرهای منطقی و مقایسه‌ای در جاوااسکریپت
۳۲JavaScript:ساختار if else و else if در جاوااسکریپت
۳۳JavaScript:تکه کد Switch در جاوا اسکریپت
۳۴JavaScript:حلقه For در جاوااسکریپت
۳۵JavaScript:حلقه While در جاوااسکریپت
۳۶JavaScript:کلمات کلیدی Break و Continue در جاوااسکریپت
۳۷JavaScript:تبدیل نوع داده‌ها در جاوااسکریپت
۳۸JavaScript:عملیات‌های بیتی در جاوااسکریپت
۳۹JavaScript:عبارات با قاعده در جاوااسکریپت
۴۰JavaScript:خطاها در جاوااسکریپت - رخ دادن خطا و رفع آن
۴۱JavaScript:Scope در جاوااسکریپت
۴۲JavaScript:Hoisting یا جا به جایی کدها در جاوااسکریپت
۴۳JavaScript:استفاده از مد یا حالت سخت‌گیرانه (use strict) در جاوااسکریپت
۴۴JavaScript:کلمه کلیدی This در جاوااسکریپت
۴۵JavaScript:کلمه کلیدی Let در جاوااسکریپت
۴۶JavaScript:ثابت‌ها در جاوااسکریپت
۴۷JavaScript:تعریف توابع به صورت پیکان
۴۸JavaScript:کلاس‌ها در جاوااسکریپت
۴۹JavaScript:اشکال‌زدایی در جاوااسکریپت
۵۰JavaScript:راهنمای استایل و استانداردهای کدنویسی در جاوااسکریپت
۵۱JavaScript:بهترین تمرینات جاوااسکریپت
۵۲JavaScript:اشتباهات رایج در برنامه‌نویسی جاوااسکریپت
۵۳JavaScript:کارایی در جاوااسکریپت
۵۴JavaScript:کلمات رزرو شده در جاوااسکریپت
۵۵JavaScript:ورژن‌های جاوااسکریپت
۵۶JavaScript:ECMAScript 5 - JavaScript 5
۵۷JavaScript:ECMAScript 6 - ECMAScript 2015
۵۸JavaScript:جیسون (JSON) در جاوااسکریپت
فرم‌ها
۱JavaScript:فرم‌ها در جاوااسکریپت
۲JavaScript:API ارزشیابی در جاوااسکریپت
اشیاء (Object)
۱JavaScript:اشیاء در جاوااسکریپت
۲JavaScript:ویژگی‌های اشیاء در جاوااسکریپت
۳JavaScript:متدهای اشیاء در جاوااسکریپت
۴JavaScript:روش‌های دسترسی به شیء در جاوااسکریپت
۵JavaScript:سازنده‌های شیء در جاوااسکریپت
۶JavaScript:شکل اصلی شیء در جاوااسکریپت
۷JavaScript:متدهای شیء در ورژن ES5 جاوااسکریپت
تابع
۱JavaScript:تعریف تابع در جاوااسکریپت
۲JavaScript:پارامتر توابع در جاوااسکریپت
۳JavaScript:فراخوانی تابع در جاوااسکریپت
۴JavaScript:صدا کردن تابع در جاوااسکریپت
۵JavaScript:تابع Apply در جاوااسکریپت
۶JavaScript:بسته‌ها (به انگلیسی: Closures) در جاوااسکریپت
HTML DOM
۱JavaScript:HTML DOM در جاوااسکریپت
۲JavaScript:متدهای HTML DOM در جاوااسکریپت
۳JavaScript:HTML DOM Document در جاوااسکریپت
۴JavaScript:عناصر HTML DOM در جاوااسکریپت
۵JavaScript:HTML DOM در جاوااسکریپت - تغییر محتوای HTML
۶JavaScript:DOM در جاوااسکریپت - تغییر CSS
۷JavaScript:انیمیشن در HTML DOM جاوااسکریپت
۸JavaScript:رویدادها در HTML DOM جاوااسکریپت
۹JavaScript:شنونده رویداد در HTML DOM جاوااسکریپت
۱۰JavaScript:پیمایش در HTML DOM جاوااسکریپت
۱۱JavaScript:عناصر (گره‌ها) HTML DOM در جاوااسکریپت
۱۲JavaScript:مجموعه‌های HTML DOM جاوااسکریپت
۱۳JavaScript:لیست گره‌ها در HTML DOM جاوااسکریپت
Browser BOM
۱JavaScript:پنجره جاوااسکریپت - مدل شیء مرورگر
۲JavaScript:پنجره صفحه نمایش در جاوااسکریپت
۳JavaScript:موقعیت پنجره در جاوااسکریپت
۴JavaScript:تاریخچه پنجره در جاوااسکریپت
۵JavaScript:ناوبری پنجره در جاوااسکریپت
۶JavaScript:جعبه پیغام جاوااسکریپت
۷JavaScript:رویدادهای زمان‌بندی شده در جاوااسکریپت
۸JavaScript:کوکی‌های جاوااسکریپت
AJAX
۱JavaScript:مقدمه‌ای بر AJAX
۲JavaScript:AJAX - شیء XMLHttpRequest
۳JavaScript:AJAX - ارسال یک درخواست به سرور
۴AJAX - پاسخ سرور
۵JavaScript:مثال‌های XML در AJAX
۶JavaScript:مثال‌های PHP در AJAX
۷JavaScript:مثال‌های ASP در AJAX
۸JavaScript:مثال پایگاه داده در AJAX
۹JavaScript:نرم‌افزارهای XML
۱۰JavaScript:مثال‌های AJAX
JSON
۱JavaScript:مقدمه‌ای بر JSON
۲JavaScript:شیوهٔ نوشتار JSON
۳JavaScript:JSON در برابر XML
۴JavaScript:انواع داده‌های مجاز در JSON
۵متد JSON.parse()
۶متد JSON.stringify()
۷JavaScript:اشیاء JSON
۸JavaScript:آرایه‌ها در JSON
۹JavaScript:PHP در JSON
۱۰JavaScript:HTML در JSON
۱۱JavaScript:JSONP
jQuery
۱JavaScript:جاوااسکریپت / انتخابگرهای DOM جی‌کوئری
۲JavaScript:جاوااسکریپت / عناصر HTML جی‌کوئری
۳JavaScript:جاوااسکریپت / استایل‌های CSS در جی‌کوئری
۴JavaScript:جاوااسکریپت / HTML DOM در جی‌کوئری


مثال

function Person(first, last, age, eye) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eye;
}


انواع اشیاء (Blueprintsها) (کلاس‌ها)

مثال‌های فصل‌های قبلی، مثال‌های محدودی هستند. آنها فقط تک شیء ایجاد می‌کنند.[۱]

گاهی اوقات ما به یک "blueprint" برای ساختن چند شیء از یک نوع نیاز داریم.

The way to create an "object type", is to use an object constructor function.

راهی که برای ساخت یک نوع کلاس یا object type وجود دارد، این است که از یک متد سازنده شیء (به انگلیسی: object constructor function) استفاده کنیم.

در مثال فوق، تابع یا متدfunction Person()متد سازنده یک شیء است.

اشیاء از یک نوع را می‌توان با فراخوانی متد سازنده شیء با استفاده از کلمه کلیدی newاستفاده کرد:

var myFather = new Person("John", "Doe", 50, "blue");
var myMother = new Person("Sally", "Rally", 48, "green");

کلمه کلیدی this

در جاوااسکریپت، چیزی کهthisرا فراخوانی می‌کند شیء است که «صاحب» کد است.

مقدار کلمه کلیدیthis، زمانی که در یک شیء استفاده می‌شود، خود آن شیء است.

در یک متد سازنده، کلمه کلیدیthisمقداری ندارد. این کلمه جانشینی برای شیء جدید است. مقدار کلمهthisزمانی که شیء جدید ساخته شد برابر خواهد بود با شیء جدید.


اضافه کردن یک ویژگی به یک شیء

اضافه کردن یک ویژگی جدید به یک شیء موجود، آسان است:

مثال

myFather.nationality = "English";

این ویژگی به شیء myfather اضافه خواهد شد. نه به شیء myMother (و نه به هر شیء از شیء person)

اضافه کردن یک متد به یک شیء

اضافه کردن یک متد جدید به یک شیء موجود، کاری آسان است:

مثال

myFather.name = function () {
  return this.firstName + " " + this.lastName;
};

این ویژگی به شیء myfather اضافه خواهد شد. نه به شیء myMother (و نه به هر شیء از شیء person)

اضافه کردن یک ویژگی به یک سازنده (به انگلیسی: Constructor)

شما نمی‌توانید از روشی که برای اضافه کردن ویژگی به یک شیء موجود استفاده می‌کنید، برای اضافه کردن ویژگی به سازنده شیء نیز استفاده کنید.

مثال

Person.nationality = "English";

برای اضافه کردن یک ویژگی به یک سازنده، شما می‌بایست آن را به تابع سازنده اضافه کنید:

مثال

function Person(first, last, age, eyecolor) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eyecolor;
  this.nationality = "English";
}


اضافه کردن یک متد به یک سازنده (به انگلیسی: Constructor)

توابع سازنده شما همچنین می‌توانند شامل متدها را نیز باشند:

مثال

function Person(first, last, age, eyecolor) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eyecolor;
  this.name = function() {return this.firstName + " " + this.lastName;};
}

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

اضافه کردن یک متد به یک سازنده شیء می‌بایست درون متد سازنده شیء انجام شود:

مثال

function Person(firstName, lastName, age, eyeColor) {
  this.firstName = firstName;
  this.lastName = lastName;
  this.age = age;
  this.eyeColor = eyeColor;
  this.changeName = function (name) {
    this.lastName = name;
  };
}

تابعchangeName()مقدار نام را روی ویژگی lastName ست می‌کند.

حالا شما می‌توانید کد زیر را امتحان کنید


myMother.changeName("Doe");

جاوااسکریپت از طریق کلمه کلیدی this که «جانشینی» برای شیء myMother است، می‌فهمد که منظور شما کدام شیء person است.

متدهای سازنده پیشفرض در جاوااسکریپت

جاوااسکریپت متدهای سازندهٔ پیشفرضی برای اشیاء اصلی دارد :

مثال

var x1 = new Object();    // A new Object object
var x2 = new String();    // A new String object
var x3 = new Number();    // A new Number object
var x4 = new Boolean();   // A new Boolean object
var x5 = new Array();     // A new Array object
var x6 = new RegExp();    // A new RegExp object
var x7 = new Function();  // A new Function object
var x8 = new Date();      // A new Date object

شیءMath()درون لیست بالا نیست.Mathیک شیء کلی یا global است. کلمه کلیدیnewرا نمی‌توان باMathاستفاده کرد.

آیا می‌دانستید؟

همان‌طور که در بالا مشاهده می‌کنید، جاوااسکریپت اشیائی از نوع داده‌هایBoolean,Number,Stringدارد. اما دلیلی برای ساخت اشیاء پیچیده وجود ندارد. مقادیر اصلی (به انگلیسی: primitive) بسیار سریع‌تر هستند.

همچنین:

از تعریف اصلی شیء { } به جای استفاده ازnew Object()استفاده کنید.

از تعریف اصلی رشته متنی یا String یعنی " " به جایnew String()استفاده کنید.

از عددهای ساده همانند ۱۲۳۴۵ به جایnew Number()استفاده کنید.

از مقادیر منطقی اصلیtrue / falseبه جایnew Boolean()استفاده کنید.

از تعریف آصلی آرایه [ ] به جایnew Array()استفاده کنید.

از الگوهای اصلی /( )/ به جایnew RegExp()استفاده کنید.

از تعریف تابع به صورت اصلی یعنیfunction expressions() { } به جایnew Function()استفاده کنید.

مثال

var x1 = {};            // new object
var x2 = "";            // new primitive string
var x3 = 0;             // new primitive number
var x4 = false;         // new primitive boolean
var x5 = [];            // new array object
var x6 = /()/           // new regexp object
var x7 = function(){};  // new function object

اشیاء رشته‌ای یا متنی

به صورت عادی، رشته‌های متنی به صورت داده‌های اصلی تعریف می‌شوند:var firstName = "John"

اما رشته‌های متنی را نیز می‌توان همانند اشیاء با استفاده از کلمه کلیدیnewساخت:var firstName = new String("John")

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

اشیاء عددی

به صورت عادی، اعداد نیز به صورت اصلی تعریف می‌شوند:var x = 123

اما اعداد نیز می‌توانند به صورت یک شیء با استفاده از کلمه کلیدیnewتعریف شوند:var x = new Number(123)

دلیل اینکه اعداد نباید به صورت شیء تعریف شوند را در فصل اعداد در جاوااسکریپت، بخوانید.

اشیاء منطقی (به انگلیسی: Boolean)

به صورت عادی، مقادیر منطقی (به انگلیسی: boolean) نیز به صورت اصلی تعریف می‌شوند:var x = false

اما مقادیر منطقی (به انگلیسی: boolean) نیز می‌توانند به صورت شیء بااستفاده از کلمه کلیدیnewتعریف شوند: var x = new Boolean(false)

دلیل اینکه مقادیر منطقی نباید به صورت شیء تعریف شوند را در فصل مقادیر منطقی در جاوااسکریپت بخوانید.

منابع آموزشی