كائنات الكائنات في JavaScript هي الفئة الأساسية لجميع الكائنات في JS ، أي أن جميع الكائنات في JS مشتقة من كائنات الكائنات. يتم استخدام كائنات الكائن بشكل أساسي لتغليف البيانات التعسفية في نموذج الكائن.
1. مقدمة لفئة الكائن
فئة الكائن هي الفئة الأساسية (الفئة الأصل) لجميع فئات JavaScript ، مما يوفر طريقة سهلة لإنشاء كائنات مخصصة دون مطالبة المبرمجين بتحديد المنشآت.
2. الخصائص الرئيسية لفئة الكائن
1.Constructor: مُنشئ الكائن.
2. النمط النمط: الحصول على كائن النموذج الأولي للفئة ، خاصية ثابتة.
3. الطرق الرئيسية لفئة الكائن
1.hasownproperty (PropertyName)
يحدد ما إذا كان الكائن لديه سمة محددة. يجب تحديد هذه الخاصية بسلسلة ، على سبيل المثال ، obj.hasownproperty ("الاسم") ، وإرجاع قيمة منطقية. لا يمكن لهذه الطريقة التحقق مما إذا كانت سلسلة النموذج الأولي للكائن لديها هذه الخاصية ؛ يجب أن يكون عضوًا في الكائن نفسه.
var str = "" ؛ ALERT ("str.hasownproperty (/" split/") هو:"+str.hasownproperty ("split")) ؛ // إرجاع falsealert ("string.prototype.hasownproperty (/" split/") هو:"+string.prototype.hasownproperty ("split")) ؛ // إرجاع صحيحنتائج التشغيل:
استخدام hasownproperty ليس فقط هنا. في jQuery ، تتمثل خطوة لا غنى عنها في كتابة المكونات الإضافية في تهيئة المعلمات. واحدة من الأساليب المهمة للغاية هي $ .extend () ؛ مبدأها هو تطبيق طريقة hasownproperty () ؛ استخدم في حلقة لاجتياز أعضاء الكائن ، إذا كان هناك أعضاء كائن من نفس الاسم ، إذا كان هناك ، استبدل القديم بعضو الكائن الجديد. وبهذه الطريقة ، يمكننا تعديل تغييرات المعلمة في طريقة التحكم في عملية البرنامج. بالنسبة لتلك الأجزاء التي لم تتغير ، لا يزال بإمكاننا استخدام القيمة الافتراضية للتحكم فيها. يمكننا أيضًا محاكاة وظيفة التمديد هذه ، على النحو التالي
وظيفة تمديد (الهدف ، المصدر) {// الهدف المصدر القديم الجديد لـ (var i في المصدر) {if (target.hasownproperty (i)) {target [i] = source [i] ؛}} return target ؛} var a = {"first": "second": "lyl" ، أ)2.isprototypeof (كائن)
تحديد ما إذا كان الكائن نموذجًا أوليًا لكائن آخر.
OBJ1.ISPROTOTYOF (OBJ2) ؛
OBJ1 هو مثيل لكائن ؛ OBJ2 هو كائن آخر سيتحقق من سلسلة النموذج الأولي. يمكن استخدام سلاسل النموذج الأولي لتبادل الوظائف بين حالات مختلفة من نفس نوع الكائن. إذا كانت سلسلة النموذج الأولي لـ OBJ2 تحتوي على OBJ1 ، فإن طريقة ISProtypeOF تُرجع صحيحًا. إذا لم يكن OBJ2 كائنًا أو لا يظهر OBJ1 في سلسلة النموذج الأولي في OBJ2 ، فسيعود طريقة ISPROTOTYOF FALSE.
<script type = "text/javaScript"> function foo () {this.name = 'foo' ؛} bar () {} bar.prototype = new foo () ؛ var goo = new bar () ؛ Alert (goo.name) ؛ //fooalert(bar.prototype.isprototypeof(goo)) ؛//true ، إذا كان هناك الكائن الحالي goo في سلسلة النموذج الأولي ، فإن طريقة isprototypeof تُرجع true </script>3.propertyiserable (PropertyName)
من خلال هذه الطريقة ، يمكننا اكتشاف ما إذا كان عضو هذا الكائن أمرًا قابلاً للتجاوز. إذا كان من الممكن اجتيازه ، فإنه يثبت أنه يمكن اجتياز هذا الكائن باستخدام A في حلقة.
التنسيق كما يلي: obj.propertyisenumerable (propertyName)
في حالة وجود PropertyName في OBJ ويمكن تعداده بشكل شامل باستخدام A for ... في حلقة ، فإن الخاصية propertyiseNumerable تُرجع صحيحًا. إذا لم يكن للكائن الخاصية المحددة أو الخاصية المحددة غير قابلة للتعداد ، فإن الخاصية propertyiseNumerable تُرجع كاذبة. عادةً ما تكون الخصائص المحددة مسبقًا غير قابلة للتعداد ، في حين أن الخصائص المعرفة من قبل المستخدم تكون دائمًا قابلة للتعداد.
4.ToString (): إرجاع السلسلة المقابلة للكائن
5.valueof (): إرجاع النوع الأصلي المقابل للكائن
يتم تعريف الطرق الخمسة أعلاه على الكائن. جميع الكائنات في ECMASCRIPT ورثتها من كائن ، لذلك جميع الكائنات في ECMASCRIPT لها عدة طرق.
رمز الاختبار 1:
var p = new Object () ؛ // قم بإنشاء كائن مباشرة من خلال كائن // سمة ديناميكية p.age = ؛ p.name = "克到到到到" للكائنات p ؛ // تمديد فئة الكائن وأضف طريقة عرض object.prototype. ent.write ("<pre>") ؛ document.writeln ("p.constructor:"+p.constructor) ؛ // الحصول على مستند مُنشئ الكائن. document.writeln ("p.isprotypeof (p):"+p.isprototypeof (p)) ؛ document.writeln ("p.hasownproperty (/" age/"): "+p.propertyisenumerable (" Age ") ؛ document.writeln (" P.ToString (): "+p.toString ()) ؛ document.writeln (" p.valueof (): "+p.valueof ()) ؛ document.write (" </pre> ") ؛ document.write (" </pre> ") ؛نتائج التشغيل:
رمز الاختبار 2:
var car = function () {} ؛ car.prototype.hello = function () {Alert ("hello car") ؛} ؛ var car = new car () ؛ car.f = function () {Alert ("method method") ؛} document.write ("<pre>") ؛ document.writeln ( "+car.hasownproperty (" f ")) ؛ // ture ، كائن CAR لديه طريقة f document.writeln (" car.propertyisenumerable (/"f/")) هو: document.writeln ("car.hasownproperty (/" hello/")"+car.hasownproperty ("hello")) ؛ // false ، لأن السيارة نفسها لا تحتوي على مستند Hello Method.Writeln ("car.propertyisEnumerable (/" Hello/") النتيجة:"+car.propertyisenumerable ("Hello")) ؛ // false ، بدون هذه الطريقة ، بالطبع ، نتيجة document.writeln ("car.constructor.prototype.hasownproperty (/" hello/") النتيجة هي:"+car.constructor.prototype.hasownproperty ( . document.writeln ("car.prototype.hasownproperty (/" hello/") والنتيجة هي:"+car.prototype.hasownproperty ("hello") ؛ // true ، النموذج الأولي من سيارة Car Class لها طريقة hello document.woywwiteln ("car.prototype.propertyiSenumable (/ "+car.prototype.PropertyIsEnumerable (" Hello ")) ؛ document.write (" </pre> ") ؛نتائج التشغيل:
ما سبق هو شرح مفصل لفئة الكائن في JS التي قدمها لك المحرر ، بما في ذلك ملخص نقاط المعرفة JavaScript (أحد عشر). آمل أن يكون ذلك مفيدًا لك.