تصف هذه المقالة الميزات المتقدمة للبرمجة الموجهة للكائنات في JavaScript. شاركه للرجوع إليه ، على النحو التالي:
1. ثلاث طرق لإنشاء كائنات:
طريقة البناء الأولى: كائن جديد
var a = new Object () ؛ ax = 1 ، ay = 2 ؛
طريقة البناء الثانية: القياس المباشر للكائن
var b = {x: 1 ، y: 2} ؛طريقة البناء الثالثة: تحديد النوع
نقطة الوظيفة (x ، y) {this.x = x ؛ this.y = y ؛} var p = new point (1،2) ؛2. الوصول إلى الكائن
الوصول إلى خصائص الكائن
تدوين قوسين: البطل ["الاسم"]. و
تدوين النقطة: Hero.name.
إذا لم تكن العقار الذي تم الوصول إليه موجودًا ، فسيتم إرجاع غير محدد.
طرق للوصول إلى الكائنات
أضف زوجًا من الأقواس بعد اسم الطريقة: Hero.say ().
طريقة الوصول مثل سمة الوصول: Hero ['say'] ().
3. حذف السمات والأساليب
// قم بإنشاء كائن فارغ var hero = {} ؛ // إضافة سمات وأساليب إلى Hero.name = "javaScript" ؛ hero.value = "helloWorld" ؛ hero.sayname = function () {return "hell" + hero.name ؛} ؛ // إخراج javaScriptalert (Hero.sayName ()) ؛ // الإخراج Hello JavaScript // حذف سمة اسم كائن Hero Delete Hero.name ؛ // Test Alert (Hero.SayName ()) ؛ // الإخراج مرحبًا غير محدد4. استخدم هذه القيمة
// قم بإنشاء كائن فارغ var hero = {} ؛ // إضافة سمات وأساليب إلى Hero Object Hero.name = "javaScript" ؛ hero.value = "helloworld" ؛ hero.sayname = function () {return "hello" + this.name ؛ // إخراج javaScriptTalet (hero.sayname ()) ؛ // الإخراج Hello JavaScriptتلخيص:
① يشير هذا هنا فعليًا إلى "هذا الكائن" أو "الكائن الحالي".
② استخدام هذا يمثل مشكلة بالنسبة لمعظم الناس. لذلك لا ينصح باستخدام الكثير!
5. كائنات مدمجة
يمكن تقسيم الكائنات المدمجة تقريبًا إلى ثلاث مجموعات:
① كائنات فئة تغليف البيانات - بما في ذلك الكائن ، الصفيف ، المنطقية ، العدد والسلسلة. تمثل هذه الكائنات أنواع بيانات مختلفة في JavaScript ، وكلها لها قيم إرجاع نوعها المختلفة ، وكذلك الحالات غير المحددة والخالية.
② كائنات من فئة الأدوات - بما في ذلك الكائنات المستخدمة لتوفير التمريرات ، مثل الرياضيات ، التاريخ ، regexp ، إلخ.
③ كائنات فئة الخطأ - بما في ذلك كائنات الخطأ العامة ومختلف كائنات فئة الأخطاء الخاصة الأخرى. يمكنهم مساعدتنا في تصحيح حالة عمل البرنامج عند حدوث استثناءات معينة.
6.Object كائن
الكائن هو الكائن الأصل لجميع الكائنات في JavaScript ، مما يعني أن جميع الكائنات موروثة من كائن الكائن.
إنشاء كائن فارغ:
var object = {} ؛ var obj = new Object () ؛7. كائن
يتم استخدام كائنات الصفيف لتخزين قيم متعددة في متغير واحد.
قم بإنشاء كائن صفيف فارغ:
var object = {} ؛ var obj = new array () ؛على سبيل المثال 1:
// invert string example // حدد سلسلة var str = "a ، b ، c ، d ، e ، f ، g" ؛ // استخدم طريقة split () لكائن السلسلة لقطع السلسلة إلى صفيف var arr = str.split ("،") ؛ // استخدم طريقة عكس () كائن الصفيف لعكس ترتيب العناصر في الصفيف. arr = arr.reverse () ؛ // اختبار تنبيه طباعة (arr.toString ()) ؛8.String كائن
الاختلافات بين كائنات السلسلة وأنواع السلسلة الأساسية:
var str = "hello" ؛ var obj = new string ("World") ؛ Alert (typeof str) ؛ // typeof stringalert (typeof obj) ؛ // كائن typeofعلى سبيل المثال 1:
// مثال على تحديد ما إذا كانت السلسلة تحتوي على سلسلة محددة // تحديد سلسلتين ليتم الحكم عليهم var str = "abcdefg" ؛ var substr = "efg" ؛/** حدد الوظيفة للحكم على ما إذا كانت السلسلة تحتوي على سلسلة محددة * * أولا: String (str) ؛ // اعتراض السلسلة المحكوم عليها var result = string.substr (str.indexof (substr) ، substr.length) ؛/** حدد ما إذا كانت السلسلة المعتقة فارغة * * فارغة ، مما يشير إلى أن السلسلة المحددة لا تحتوي على السلسلة المحددة * * غير فارغة ، مما يشير إلى أن السلسلة المحددة */if (نتيجة == سحاب) false ؛}} ALERT (SUB (STR ، SUNSTR)) ؛
9. النموذج الأولي
الوظيفة نفسها هي أيضا كائن يحتوي على طرق وخصائص. الآن ما نريد أن ندرسه هو خاصية أخرى لكائن الوظيفة - النموذج الأولي.
أضف طرقًا وخصائصًا باستخدام النماذج الأولية
أعد كتابة خصائص النموذج الأولي باستخدام خصائصه الخاصة
تمديد الكائنات المدمجة
أضف طرقًا وخصائصًا باستخدام النماذج الأولية
فيما يلي إنشاء كائن وظيفة جديد وضبط بعض الخصائص والأساليب:
وظيفة البطل (الاسم ، اللون) {this.name = name ؛ this.color = اللون ؛ this.whatareyou = function () {return "أنا" + this.color + "" + this.name ؛ }} var Hero = new Hero ("JavaScript" ، "Red") ؛ Alert (Hero.Whatareyou ()) ؛ // الإخراج أنا جافا سكريبت حمراءأضف بعض الخصائص والأساليب إلى كائن دالة البطل أعلاه:
hero.prototype.price = 100 ؛ hero.prototype.rating = 3 ؛ hero.prototype.getInfo = function () {return "rating:" + this.rating + "، price: // تصنيف الإخراج: 3 ، السعر: 100يمكن أيضًا القيام بالطريقة أعلاه مثل هذا:
Hero.prototype = {Price: 100 ، Rating: 3 ، getInfo: function () {return "reging:" + this.rating + "، price:" + this.price ؛ }} ؛أعد كتابة خصائص النموذج الأولي باستخدام خصائصه الخاصة
ما الذي يجب أن أفعله إذا كانت سمات الكائن الخاصة هي نفس سمة النموذج الأولي؟ الجواب هو أن سمات الكائن الخاصة لها أولوية أعلى من سمات النموذج الأولي.
وظيفة Hero () {this.name = "jscript" ؛} hero.prototype.name = "javaScript" ؛ var hero = new Hero () ؛ Alert (Hero.name) ؛ // Output JscriptDelete Hero.name ؛ Alert (Hero.name) ؛ // إخراج JavaScriptتمديد الكائنات المدمجة
// أضف وظيفة للحكم على صفيف كائن صفيف النموذج الأولي. النموذج النموذجي. }} return false ؛} // تحديد كائن صفيف var a = ["Red" ، "Green" ، "Blue"] ؛ // Test Alert (A.Inarray ("Red")) ؛ //truealert(a.inarray("eyellow ") ؛ //خطأ شنيع10. الميراث
إذا كان كلتا الفئتين من نوع المثيل نفسه ، فهناك بعض العلاقات بينهما. نسمي العلاقة المعممة بين أنواع نفس الحالة "الميراث".
تحتوي علاقة الميراث على ثلاثة معاني على الأقل:
① يمكن لحالات الفئات الفرعية مشاركة أساليب فصول الوالدين.
② يمكن للفئات الفرعية تجاوز أساليب الفئة الأصل أو تمديد طرق جديدة.
③ الفئات الفرعية والفئات الوالدين كلاهما "أنواع" من مثيلات الفئة الفرعية.
في JavaScript ، "الميراث" غير مدعوم. وهذا يعني ، لا يوجد بناء جملة ورث في جافا سكريبت. في هذا المعنى ، فإن JavaScript ليست لغة مباشرة موجهة نحو الكائن.
11. سلسلة النموذج الأولي
سلسلة النموذج الأولي هي طريقة الميراث الافتراضية التي صاغها معيار ECMASCRIPT.
على سبيل المثال:
الدالة a () {this.name = "a" ؛ this.toString = function () {return this.name} ؛} الدالة b () {this.name = "b" ؛} الدالة c () {this.name = "c" ؛ this.age = 18 ؛ this.getage = function () {return this.age} ؛توضيح:
يتم إنشاء الكائن مباشرة في خاصية النموذج الأولي للكائن B ، ولا يمد النموذج الأولي الأصلي لهذه الكائنات.
يتم إنشاء كيان جديد من خلال جديد A () ثم يستخدم للكتابة فوق النموذج الأولي للكائن.
JavaScript هي لغة تعتمد بالكامل على الأشياء ، ولا يوجد مفهوم للطبقة.
لذلك ، من الضروري إنشاء كيان مباشرة مع A () جديد قبل عمل الميراث ذي الصلة من خلال خصائص الكيان.
بعد الانتهاء من تنفيذ الميراث ، لن يؤثر أي تعديل أو إعادة كتابة أو حذف A () على B ().
ورثت من النموذج الأولي فقط:
الدالة a () {} a.prototype.name = "a" ؛ a.prototype.toString = function () {return this.name} ؛ function b () {} b.prototype = a.prototype ؛ b.prototype.name = "b" = 18 ؛ c.prototype.getage = function () {return this.age} ؛الميراث بين الكائنات (المحتوى الموسع ، لا يمكن أن يكون) (نسخة ضحلة)
// تقبل الوظيفة كائنًا وإرجاع وظيفة النسخ الخاصة بها تمدد (p) {var z = {} ؛ // تحديد كائن فارغ z لـ (var i in p) {// var i = 0 ؛ أنا <p.length ؛ i ++ z [i] = p [i] ؛ // إذا كنت تعامل كصفيف ، فيمكنك فهم} // uber settribute: استخدم p كمصل لـ z و point z إلى النموذج الأولي لـ p z.Uber = p ؛ return z ؛} // تعريف الكائن A ، ولكن الكائن A ليس كائن دالة var a = {name: "a" ، toStr: function () {return this.name ؛}} // define object b ، لكن الكائن B ليس كائن دالة var b = extendcopy (a) ؛ B.Name = "B" ؛ // الإخراج أ ، ب ، 18ملاحظة: العديد من تخطيطات التعليمات البرمجية في البرنامج التعليمي ليست موحدة. فيما يلي بعض أدوات تنسيق رمز JavaScript وتجميلها للجميع لاستخدامها:
أداة تنسيق رمز JavaScript:
http://tools.vevb.com/code/js
أدوات تجميل/ضغط/تنسيق/تشفير رمز JavaScript:
http://tools.vevb.com/code/jscompress
أداة ضغط JSMin Online JS:
http://tools.vevb.com/code/jsmincompress
لمزيد من المعلومات حول JavaScript ، يرجى مراجعة الموضوعات الخاصة لهذا الموقع: "تعليمي جافا سكريبت الموجهة نحو الكائنات" ، "ملخص لمهارات تشغيل JSON في JavaScript" ، "ملخص لتبديل JavaScript آثار وتقنيات" Summary "،" Summary Errors ". "ملخص هياكل بيانات JavaScript ومهارات الخوارزمية" ، "ملخص خوارزميات وتقنيات JavaScript Traversal" و "ملخص استخدام العمليات الرياضية Javascript"
آمل أن تكون هذه المقالة مفيدة لبرمجة JavaScript للجميع.