بناء الكائنات لجافا سكريبت

النموذج

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

جرب بنفسك

عادةً من الجيد تسمية دالة البناء بأحرف كبيرة.

نوع الكائن (خطة) (فئة)

المثال في الفصل السابق محدود. إنه يخلق كائنًا واحدًا فقط.

في بعض الأحيان نحتاج إلى إنشاء العديد من الكائنات من نفس "الخطة".

طريقة إنشاء "نوع الكائن" هو استخدامدالة بناء الكائن

في المثال السابق،دالة Person() هي دالة بناء الكائن.

من خلال new كلمة مفتاحية استدعاء دالة البناء يمكن إنشاء كائنات من نفس النوع:

كلمة مفتاحية myFather = new Person("Bill", "Gates", 62, "blue");
كلمة مفتاحية myMother = new Person("Steve", "Jobs", 56, "green");

جرب بنفسك

this كلمة مفتاحية

كلمة مفتاحية this الاشياء في JavaScript تُدعى

this عند استخدامه في الكائن، هو الكائن نفسه.

في دالة البناءthis لايوجد قيمة. هو بديل للاجتماع الجديد. عند إنشاء اجتماع جديد، يصبح قيمة this هذا الاجتماع الجديد.

الرجاء الانتباه this إنها ليست متغيرًا. إنها كلمة مفتاحية. لا يمكنك تغيير قيمة this.

إضافة خاصية إلى الكائن

إضافة خاصية جديدة إلى كائن موجود سهلة جدًا:

النموذج

myFather.nationality = "English";

جرب بنفسك

تم إضافة الخاصية الجديدة إلى myFather. وليس myMother ولا أي كائن person آخر.

إضافة طريقة إلى الكائن

إضافة طريقة جديدة إلى كائن موجود سهلة جدًا:

النموذج

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

جرب بنفسك

تم إضافة الطريقة الجديدة إلى myFather. وليس myMother ولا أي كائن person آخر.

إضافة خاصية إلى البناء

على عكس إضافة خاصية جديدة إلى كائن موجود، لا يمكنك إضافة خاصية جديدة إلى بناء الكائن:

النموذج

Person.nationality = "English";

جرب بنفسك

لإضافة خاصية جديدة إلى البناء، يجب أن يتم إضافتها إلى دالة البناء:

النموذج

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

جرب بنفسك

بهذا يمكن أن تحصل خصائص الكائن على قيم افتراضية.

إضافة طريقة إلى البناء

يمكن أن تعرف طريقة في دالة البناء الخاصة بك أيضًا:

النموذج

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() تغير اسم name وتسلمه إلى الخاصية lastName من person.

الآن يمكنك تجربتها:}

myMother.changeName("Jobs");

جرب بنفسك

من خلال myMother بديل this،يمكن لـ JavaScript معرفة الشخص الذي يعالجه حاليًا.

المولدات المدمجة في JavaScript

يقدم JavaScript مولدات للاشارات الأصلية:

النموذج

var x1 = new Object();    // كائن Object جديد
var x2 = new String();    // كائن String جديد
var x3 = new Number();    // كائن Number جديد
var x4 = new Boolean();   // كائن Boolean جديد
var x5 = new Array();     // كائن Array جديد
var x6 = new RegExp();    // كائن RegExp جديد
var x7 = new Function();  // كائن Function جديد
var x8 = new Date();      // كائن Date جديد

جرب بنفسك

Math() الكائنات ليست في هذا القائمة. Math هو الكائن العام.new المفاتيح لا يمكن استخدامها في Math.

هل تعلم؟

كما هو موضح أعلاه، يقدم JavaScript نسخة الأصلية من السلاسل والأرقام والبوليانات. ولكن ليس هناك سبب لإنشاء كائنات معقدة. القيم الأصلية أسرع بكثير!

الرجاء استخدام تعبير الكائن {} البديل new Object()

الرجاء استخدام تعبير السلسلة "" البديل new String()

الرجاء استخدام تعبير العدد بدلاً عنه Number()

الرجاء استخدام تعبير الحقيقي بدلاً عنه new Boolean()

الرجاء استخدام تعبير القائمة [] البديل new Array()

الرجاء استخدام تعبير النمط بدلاً عنه new RexExp()

الرجاء استخدام تعبير الدالة () {} البديل new Function()

النموذج

var x1 = {};            // الجديد من الكائنات
var x2 = "";            // الجديد من القيم الأصلية للسلسلة
var x3 = 0;             // الجديد من القيم الأصلية للعدد
var x4 = false;         // الجديد من القيم الأصلية للعبرة
var x5 = [];            // جديد للعنصر النصي
var x6 = /()/           // جديد للعنصر النصي
var x7 = function(){};  // جديد للعنصر الدالة

جرب بنفسك

عنصر نص

عادةً، يتم إنشاء القيم النصية كقيم أساسية: var firstName = "Bill"

لكن يمكنك أيضًا استخدام new مفتاح الكلمة لإنشاء العنصر النصي: var firstName = new String("Bill")

يرجى JS نصفي هذا الفصل، سنتعلم لماذا لا يجب إنشاء القيم النصية كعناصر.

عنصر عدد

عادةً، يتم إنشاء القيم العددية كقيم أساسية: var x = 456

لكن يمكنك أيضًا استخدام new مفتاح الكلمة لإنشاء العنصر العددي: var x = new Number(456)

يرجى JS عددفي هذا الفصل، سنتعلم لماذا لا يجب إنشاء القيم العددية كعناصر.

عنصر منطقي

عادةً، يتم إنشاء القيم المنطقية كقيم أساسية: var x = false

لكن يمكنك أيضًا استخدام new مفتاح الكلمة لإنشاء العنصر المنطقي: var x = new Boolean(false)

يرجى JS منطقيفي هذا الفصل، سنتعلم لماذا لا يجب إنشاء القيم المنطقية كعناصر.