با سلام به شما دوستان خوبم، امیدوارمکه حالتون خوب باشه. و شاد وسلامت باشن. میخواهیم در مورد نمونه های اولیه ی شی (object prototype) کمی بیاموزیم.

هر شی ای که در جاوا اسکریپت با آن سر و کار داریم، یک نمونه ی اولیه (prototype) دارد.

Prototype، یک خاصیت متعلق به تمامی اشیا جاوا اسکریپت است که اشیا قادراند از طریق آن قابلیت های جدیدی به ارث ببرند.

در واقع کلیه ی اشیا جاوا اسکریپت، خاصیت ها و متدهای خود را از نمونه ی اولیه خود به ارث می برند.

Prototype های جاوا اسکریپت

همان طور که پیش تر شرح دادیم، تمامی اشیا جاوا اسکریپت خاصیت ها و توابع خود را از نمونه ی اولیه ی خود به ارث می گیرند.

اشیایی که با استفاده از object literal ها و یا توسط تابع new Object() ایجاد می شوند، در واقع دارند از یک نمونه ی اولیه به نام Object.prototype خاصیت ها و توابع خود را به ارث می گیرند.

اشیایی که به وسیله ی تابع new Date() ایجاد شده اند، Date.prototype را به ارث می برند.

Object.prototype در بالاترین مرتبه زنجیره ی متشکل از نمونه های اولیه قرار می گیرد.

تمامی اشیا جاوا اسکریپت (اعم از Date،Array ،RegExp ، Function و غیره … .) خواص و متدهای خود را از Object.prototype به ارث می برند.

نحوه ی ایجاد نمونه ی اولیه

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

مثال:

function person(first, last, age, eyecolor) {

this.firstName = first;

this.lastName = last;

this.age = age;

this.eyeColor = eyecolor;

}

در این روش می توان به کمک کلیدواژه ی new، از نمونه ی اولیه یکسان اشیا (چندین شی متعدد) جدید ایجاد کرد:

نمونه یک
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲

function person(first, last, age, eyeColor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyeColor;
}
var myFather = new person(“John”, “Doe”, 50, “blue”);
var myMother = new person(“Sally”, “Rally”, 48, “green”);
document.getElementById(“demo”).innerHTML =
“My father is ” + myFather.age + “. My mother is ” + myMother.age;

constructor function، نمونه ی اولیه برای شی person است.

افزودن خواص و توابع جدید به اشیا

گاهی شما نیاز دارید property (خواص) یا method های (توابع) جدیدی به شی موجود یا اشیا موجود از نوع خاص و یا نمونه ی اولیه ی یک شی اضافه کنید. نحوه ی افزودن خاصیت جدید به تمامی موارد نام برده ر ا زیر برای شما شرح می دهیم:

افزودن خاصیت جدید به شی موجود:

اضافه کردن property جدید به شی موجود بسیار آسان می باشد. برای یادگیری روش آن کافی است به مثال زیر دقت کنید:

نمونه دو
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳

function person(first, last, age, eyeColor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyeColor;
}
var myFather = new person(“John”, “Doe”, 50, “blue”);
var myMother = new person(“Sally”, “Rally”, 48, “green”);
myFather.nationality = “English”;
document.getElementById(“demo”).innerHTML =
“My father is ” + myFather.nationality;

همان طور که مشاهده می کنید، خاصیت جدید به شی myFather اضافه می شود (و نه به شی myMother و یا هر شی دیگر ).

افزودن متد جدید به یک شی موجود:

نمونه سه
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳
۱۴
۱۵

function person(first, last, age, eyeColor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyeColor;
}
var myFather = new person(“John”, “Doe”, 50, “blue”);
var myMother = new person(“Sally”, “Rally”, 48, “green”);
myFather.name = function () {
return this.firstName + ” ” + this.lastName;
};
document.getElementById(“demo”).innerHTML =
“My father is ” + myFather.name();

متد مورد نظر به شی myFather اضافه می شود و نه به شی myMother.

افزودن خاصیت های جدید به یک نمونه ی اولیه:

نمی توان به همان شیوه ای که یک property جدید را به شی موجود ضمیمه می کردیم، یک خاصیت جدید به نمونه ی اولیه (prototype) اضافه کنید زیرا که نمونه ی اولیه یک شی موجود محسوب نمی شود.

مثال:

نمونه چهار
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳

function person(first, last, age, eyeColor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColorColor = eyeColor;
}
person.nationality = “English”;
var myFather = new person(“John”, “Doe”, 50, “blue”);
var myMother = new person(“Sally”, “Rally”, 48, “green”);
document.getElementById(“demo”).innerHTML =
“My father is ” + myFather.nationality;

به منظور افزودن خاصیت جدید به یک سازنده (constructor)، باید آن را به تابع سازنده (تابعی که به عنوان سازنده استفاده می شود) اضافه کنید:

نمونه پنج
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳

function person(first, last, age, eyeColor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColorColor = eyeColor;
this.nationality = “English”;
}
var myFather = new person(“John”, “Doe”, 50, “blue”);
var myMother = new person(“Sally”, “Rally”, 48, “green”);
document.getElementById(“demo”).innerHTML =
“My father is ” + myFather.nationality + “. My mother is ” + myMother.nationality;

property های نمونه ی اولیه، می توانند مقدار داشته باشند (مقادیر پیش فرض).

نمونه شش
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳
۱۴

function person(first, last, age, eyeColor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColorColor = eyeColor;
this.name = function () {
return this.firstName + ” ” + this.lastName
};
}
var myFather = new person(“John”, “Doe”, 50, “blue”);
document.getElementById(“demo”).innerHTML =
“My father is ” + myFather.name();

بکار بردن خاصیت prototype

خاصیت prototype به شما این امکان را می دهد که خواص جدید به یک نمونه ی اولیه ی موجود اضافه کنید:

نمونه هفت
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲

function person(first, last, age, eyeColor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColorColor = eyeColor;
}
person.prototype.nationality = “English”;
var myFather = new person(“John”, “Doe”, 50, “blue”);
document.getElementById(“demo”).innerHTML =
“My father is ” + myFather.nationality;

خاصیت مذکور همچنین به شما اجازه می دهد، متدهای جدید به نمونه ی اولیه ی موجود اضافه کنید:

نمونه هشت
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳
۱۴
۱۵

function person(first, last, age, eyeColor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColorColor = eyeColor;
}
person.prototype.name = function () {
return this.firstName + ” ” + this.lastName
};

var myFather = new person(“John”, “Doe”, 50, “blue”);
document.getElementById(“demo”).innerHTML =
“My father is ” + myFather.name();

توجه: هیچگاه نمونه های اولیه ی اشیا استاندارد جاوا اسکریپت را اصلاح یا modify نکنید. در صورت نیاز سعی کنید، فقط و فقط نمونه های اولیه ای که خود ایجاد کرده اید را دستکاری کنید.

نمونه های اولیه ی شی (object prototype)
مقاله قبلی