‎‎سازنده هاي شئ جاوااسكريپتJavaScript Object Constructors -‎

Previous >    <Next  

‎‎مثال ـ سازنده شئ

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

--(go to editor for change code and run)

‎‎نكات ـ نامگذاري تابع سازنده با حرف اول بزرگ عمل مناسبي منظور ميشود.

‎در موردthis ـ در تابع سازنده this مقدار ندارد .آن براي جايگزيني شئ جديد است .يعني ‎هنگاميكه شئ جديد ايجاد ميشود نام آن در كلمهthis جايگزين ميشود .

‎بخش JavaScript This Keyword ‎را هم مطالعه فزمائيد.

‎‎انواع شئObject Types (Blueprints) (Classes) -‎

‎‎مثال هاي فصل قبل محدويت دارند وفقط اشياء واحد ايجاد ميكنند.

‎گاهي اوقات براي ايجاد بسياري از اشياء ازيك نوع طرح ونقشه‎(‎"blueprint‎")‎ ‎نيازمنديم .راه ايجاد اشياء هم نوع استفاده از يك تابع سازنده است.

‎‎در مثال بالا‎ function person( )‎ يك تابع سازنده شئ است .

‎شئ هائي از همان نوع با فراخواني تابع سازنده شئ و با كي ورد‎new ‎ ايجاد ‎ميشوند.

‎‎مثال ـ در اين مثال دو شئ هم نوع بنامmyFather و myMother ايجاد شده اند .

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

--(go to editor for change code and run)

‎‎كي وردthis

‎در جاوااسكريپت كي ورد‎this‎ بيك شئ اشاره ميكند .اينكه كدام شئ ، بستگي ‎بستگي به نحوي فراخواني يا استفاده آن دارد.

‎‎كي ورد‎this‎ باشياء مختلف وابسته به استفاده ، اشاره ميكند .مطابق زير :

‎‎توجه ـ‎this‎ يك متغير نيست ، آن يك كي ورد است .نميتوان مقدار آنرا تغيير داد .

‎‎افزودن ويژگي به شئAdding a Property to an Object -‎

‎‎اضافه نمودن يك ويژگي به شئ موجود كار آساني است .مطابق نمونه زير:

‎‎مثال ـ افزودن ويژگي به شئ موجود.

myFather.nationality = "English";

--(go to editor for change code and run)

‎ويژگي اضافه شده به شئmyFaher براي شئmyMother نمي باشد .يا بعبارتي براي هيچكدام از ‎اشياء ديگرperson نمي باشد .

‎‎افزودن متد به شئAdding a Method to an Object -‎

‎‎افزودن متد بيك شئ كار آساني است .مطابق نمونه زير:

‎‎مثال ـ اضافه نمودن متد به شئ

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

--(go to editor for change code and run)

‎‎اين متد فقط به شئmyFather اضافه شده است، وتاثيري روي اشياء هم نوع ديگر ندارد .

‎‎افزودن ويژگي به سازندهAdding a Proerty to a Construtor -‎

‎نمي توان يك ويژگي جديد به يك سازنده شئ اضافه كرد، همانطوريكه يك ويژگي به شئ موجود ‎اضافه ميشود.

‎‎مثال ـ مورد زير عمل نميگردد.

Person.nationality = "English";

--(go to editor for change code and run)

‎‎براي اضافه كردن ويژگي به سازنده شي بايد آنرا به تابع آن اضافه نمود .به نمونه زير توجه كنيد

‎‎مثال ـ ويژگيnationality به تابع سازنذه اضافه شده است .

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

--(go to editor for change code and run)

‎باين ترتيب ويژگي هاي شئ ميتوانند مقادير پيش فرض داشته باشند .دراين مثالnationality داراي ‎پيش فرض است.

‎‎افزودن متد به سازندهAdding a Method to a Constructor -‎

‎‎با تابع سازنده همچنين ميتوان متدها را تعريف كرد.

‎‎مثال ـ تعريف متدname در تابع سازنده

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;
  };
}

--(go to editor for change code and run)

‎نميتوان يك متد جديد را به سازنده شئ اضافه كرد، مشابه با روشي كه متد جديد را به شئ موجود ‎اضافه ميكنيد.

‎‎افزودن متد به سازنده شئ بايد درداخل تابع سازنده انجام شود.

در داخل تابع سازنده changeName مثال ـ افزودن متد‎
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()‎‎ مقدارname را به ويژگيlastName شئ ‎اختصاص ميدهد.

‎‎مثال ـ تغيير نام شئ از طريق متد فوق

myMother.changeName("Doe");

--(go to editor for change code and run)

‎جاوااسكريپت ميداند كه با كدام شئperson اقدام ميكنيد، كد دراين مثال this به شئ myMother ‎اشاره دارد.

‎‎سازنده هاي داخلي جاوااسكريپتBuilt-‎in JavaScript Constructors -‎

‎‎جاوااسكزيپت براي اشياء بومي خود داراي سازنده هاي داخلي است:

  // Anew String()    // A new String object
new Number()    // A new Number object
new Boolean()   // A new Boolean object
new Object()    // A new Object object
new Array()     // A new Array object
new RegExp()    // A new RegExp object
new Function()  // A new Function object
new Date()     new Date object

--(go to editor for change code and run)

‎شئ‎math()‎‎ در ليست بالا نيست،‎math‎ يك شئ ‎سراسري جاوااسكريپت است و كي ورد‎new ‎ براي آن نميتواند استفاده شود .

‎همانطوريكه در بالا ملاحظه فرموديد، جاوااسكريپت داراي نسخه هاي شئ ازانواع داده هاي اوليه Number, String‎وBoolean است .اما دليلي براي ايجاد اشياء پيچيده با آنها نيست .مقادير اوليه ‎بسيار سريعتر ميباشند.

‎‎مثال ـ دستور اول سريعتر از دومي است.

let x="John":
let y= new String("Jhon:");

‎‎بجاي كيورد‎new ‎ در تعريف انواع شئ داده موارد زير را رعايت كنيد:

‎‎مثال ـ براي موارد فوق

let x1 = "";             // new primitive string
let x2 = 0;              // new primitive number
let x3 = false;          // new primitive boolean

const x4 = {};           // new Object object
const x5 = [];           // new Array object
const x6 = /()/          // new RegExp object
const x7 = function(){}; // new function

--(go to editor for change code and run)

‎‎در جدول زير نمونه استفاده نرمال وشئ آماده است.

‎‎نوع ‎‎روش نرمال ‎‎روش شئ ‎‎آدرس بخش مطالب
‎‎رشته ‎‎let firstName=‎"Jhon‎"‎‎‎ ‎‎let firstName= new String(‎"Jhon‎")‎‎ Js Strings
‎‎اعداد ‎let x=3‎ ‎‎let x= new Number(3)‎‎ Js Number
‎‎بولين ‎let x = false‎‎ ‎‎let x = new Boolean(false)‎‎ Boolean Number

Previous >    <Next