JavaScript Object Constructors
مثال
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
من الممارسات الجيدة تسمية وظائف المُنشئ بحرف أول كبير.
أنواع الكائنات (المخططات) (الفئات)
الأمثلة من الفصول السابقة محدودة. هم فقط يخلقون أشياء واحدة.
نحتاج أحيانًا إلى " مخطط " لإنشاء العديد من الكائنات من "النوع" نفسه.
طريقة إنشاء "نوع الكائن" ، هي استخدام دالة مُنشئ الكائن .
في المثال أعلاه ، function Person()
هي دالة منشئ الكائن.
يتم إنشاء كائنات من نفس النوع عن طريق استدعاء دالة المُنشئ new
بالكلمة الأساسية:
const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
هذه الكلمة _
في JavaScript ، الشيء المسمى this
هو الكائن الذي "يمتلك" الشفرة.
قيمة this
، عند استخدامها في كائن ، هو الكائن نفسه.
في دالة منشئ this
ليس لها قيمة. إنه بديل للكائن الجديد. this
ستصبح قيمة الكائن الجديد عند إنشاء كائن جديد.
لاحظ أن this
هذا ليس متغيرًا. إنها كلمة رئيسية. لا يمكنك تغيير قيمة this
.
إضافة خاصية إلى كائن
من السهل إضافة خاصية جديدة إلى كائن موجود:
مثال
myFather.nationality = "English";
ستتم إضافة الخاصية إلى myFather. ليس لأمي. (لا يعترض أي شخص آخر).
إضافة طريقة إلى كائن
من السهل إضافة طريقة جديدة إلى كائن موجود:
مثال
myFather.name = function () {
return this.firstName + " " + this.lastName;
};
ستتم إضافة الطريقة إلى myFather. ليس لأمي. (لا يعترض أي شخص آخر).
إضافة عقار لمنشئ
لا يمكنك إضافة خاصية جديدة إلى مُنشئ الكائن بالطريقة نفسها التي تضيف بها خاصية جديدة إلى كائن موجود:
مثال
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 () قيمة الاسم لخاصية LastName للشخص.
الآن يمكنك أن تجرب:
myMother.changeName("Doe");
تعرف JavaScript الشخص الذي تتحدث عنه من خلال "استبدال" هذا بـ myMother .
منشئو JavaScript المدمجون
تحتوي JavaScript على مُنشئات مضمنة للكائنات الأصلية:
new 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() // A new Date object
الكائن Math()
ليس في القائمة. Math
هو كائن عالمي. لا يمكن new
استخدام الكلمة الأساسية على
Math
.
هل كنت تعلم؟
كما ترى أعلاه ، تحتوي JavaScript على إصدارات كائن لأنواع البيانات الأولية String
، Number
و Boolean
. لكن لا يوجد سبب لإنشاء كائنات معقدة. القيم الأولية أسرع بكثير:
استخدم سلسلة حرفية ""
بدلاً من new String()
.
استخدم الأرقام الحرفية 50
بدلاً من new Number()
.
استخدم القيم المنطقية true / false
بدلاً من new Boolean()
.
استخدم الكائن الحرفي {}
بدلاً من new Object()
.
استخدم المصفوفة الحرفية []
بدلاً من new Array()
.
استخدم النمط الحرفي /()/
بدلاً من new RegExp()
.
استخدم تعبيرات الوظائف () {}
بدلاً من new Function()
.
مثال
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
كائنات السلسلة
عادةً ، يتم إنشاء السلاسل كأساسيات: firstName = "John"
ولكن يمكن أيضًا إنشاء السلاسل ككائنات باستخدام new
الكلمة الأساسية:
firstName = new String("John")
تعرف على سبب عدم إنشاء السلاسل ككائن في الفصل JS Strings .
عدد الكائنات
عادة ، يتم إنشاء الأرقام كأوليات: x = 30
ولكن يمكن أيضًا إنشاء الأرقام ككائنات باستخدام new
الكلمة الأساسية:
x = new
Number(30)
تعرف على سبب عدم إنشاء الأرقام كعنصر في الفصل JS Numbers .
كائنات منطقية
عادةً ، يتم إنشاء القيم المنطقية كأساسيات: x =
false
ولكن يمكن أيضًا إنشاء القيم المنطقية ككائنات باستخدام new
الكلمة الأساسية:
x = new Boolean(false)
تعرف على سبب عدم إنشاء القيم المنطقية ككائن في الفصل JS Booleans .