JS هي لغة قائمة على الكائنات يمكنها محاكاة اللغات الموجهة للكائنات مثل Java | C ++ باستخدام الأفكار الموجهة للكائنات.
• الموجه نحو العملية
◦ تتبع الخطوات لحل المشكلة
• الكائن الموجهة
◦ Focus على الكائنات (المحتوى والأدوار) اللازمة لحل المشكلة ، ثم استدعاء الأساليب ذات الصلة وفقًا لقواعد معينة وفقًا لمنطق العمل.
يتم تقسيم الكائنات إلى كائنات النظام والكائنات المخصصة. يمكننا إنشاء كائنات النظام عن طريق استدعاء مُنشئ النظام ، مثل Array | Date ، إلخ. يجب إنشاء الكائنات المخصصة بنفسها ولا يمكن إنشاؤها باستخدام وظائف النظام.
جافا سكريبت إنشاء كائن
1. إنشاء مباشرة
// إنشاء مباشرة // js قم بإنشاء كائن // 1: إنشاء كائن فارغ var person1 = new Object () ؛ // 2: أضف الخصائص وطرق الكائن المطلوبة إلى person1.name = "ailer" ؛ وحدة التحكم .log (person1.name) ؛ person1.gender = "ذكر" ؛ // 3: تمت إضافة الطريقة إلى هذا الكائن | (وظيفة) person1. manager = function () {console .log ("Ailer هو اسم اللغة الإنجليزية") ؛ } // 4: طريقة كائن الاتصال: كائن. اسم الطريقة () ؛ person1.manager () ؛ // وظيفة | طريقة؟ عندما تنتمي وظيفة ما إلى كائن ، تنتمي الوظيفة إلى الطريقة الموجودة تحت هذا الكائن ؛ تسمى الوظيفة من خلال اسم الطريقة ؛ // متغير | سمة؟ عندما ينتمي المتغير إلى كائن معين ، فإن المتغير هو الطريقة الموجودة تحت هذا الكائن. استدعاء المتغيرات حسب أسماء السمات. // زيادة person1.age = "6" ؛ // تغيير person1.name = "Lemon" ؛ // تحقق من وحدة التحكم .log (person1.name) ؛ // delete person1.age ؛ وحدة التحكم .log (person1.age) ؛ ==> undefined // نوع المرجع ، عنوان المتجر // النوع الأساسي: BUSE FLAG BIT/* var arr1 = [1،2،3،4] var arr2 = [5 ، 6 ، 7،9] ؛ var arr2 = arr1 ؛ // arr2 [0] = 10 ؛ // تغيير القيمة في Arr2 ، Arr1 أيضًا يغير التنبيه (Arr1 [0]) ؛ // ===> 10 نوع مرجع*/var per2 = كائن جديد () ؛ per2.name = "relia" ؛ per2.age = "18" ؛ PER2.GENDER = "أنثى" ؛ per2.hobby = "Lemons" ؛ // 1: خصائص الوصول من خلال. (بناء الجملة) // 2: الوصول إلى خصائص الكائن من خلال [] (قوسين مربعة) ؛ يجب أن تكون الأقواس المربعة سلاسل أو متغيرات سمة تنقذ سلسلة السمة | استخدم Brackets var n = "name" //console.log(per2 Budap"name" ؛ لـ (خاصية var في per2) {// console.log (per2 [property]) ؛ }على الرغم من بديهية ، فإن الكود لا لزوم له عند إنشاء كائنات متعددة
2. إنشاء وظائف (وضع المصنع)
لحل مشكلة إعلانات الكائنات المماثلة المتعددة ، يمكننا استخدام طريقة تسمى نمط المصنع ، والتي تتمثل في حل مشكلة إنشاء الكائنات مع عدد كبير من التكرار.
// تحديد وظيفة المنشئ CreatePerson (الاسم ، العمر) {// إنشاء كائن فارغ جديد var person = كائن جديد ؛ // إضافة سمة | method person.name = name ؛ شخص = العمر ؛ شخص. manager = function () {console .log ("ai") ؛ } // إرجاع الشخص ؛ } var per1 = createPerson ("Aier" ، 12) ؛ وحدة التحكم .log (per1.name) ؛ var per2 = CreatePerson ("Lemon" ، 23) ؛ وحدة التحكم .log (per2.age) ؛ console.log (per2 extryof object) ؛ // true console.log (per2 extomof createperson) ؛ // false // لا يمكن تمييز نوع الكائن console.log (per2.manager == per1.manager) ؛ممتاز: الجزء الأكبر من حالات مماثلة
مفقود: يستخدم المثيل سمات مماثلة ، مما يتسبب في أن تكون نفايات الذاكرة عامة ولا يمكن تمييز نوع الكائن.
3. الخلق الحرفي
ممتاز: بسيط ومباشر
مفقود: غير قادر على بناء كائنات مماثلة على دفعات
// لا يشير الكائن الذي أنشأته الحرفيين إلى المثيل ، ولكن إلى كائن // إنشاء var per1 = {name: "ailer" ، المُنشئ: per1 ، العمر: 12 ، الجنس: "أنثى" ، هواية: "play" ، eat: function () {console.log (this.name) ؛ }} per1.eat () ؛ // ailer per1.name = "lemon" ؛ per1.eat () ؛ // lemon console.log (typeof per1) ؛ // object console.log (per1.constructor == object) ؛ // true4. جديد+مُنشئ
// ينشئ مُنشئ كائنًا ، ولا يتم التعرف على كائناته الفرعية بواسطة مثيل. يتم التعرف على جميع الكائنات التي تم إنشاؤها باستخدام كائنات جديدة+OBJ // ، ولكن لا تزال بعض منطقة التعليمات البرمجية تضيع ؛ ==> إنتاج النموذج الأولي // إنشاء كائن JS جديد+مُنشئ // 1: إنشاء مُنشئ | عادةً ما يكون الحرف الأول هو الدالة الكبرى CreatePerson (الاسم ، العمر) {// 2: Affix the regutes | طريقة الكائن على هذا المؤشر. عندما يتم استدعاء الوظيفة لإنشاء كائن ، يشير هذا المؤشر إلى هذا الكائن الجديد ؛ // هذا يضاف إلى هذا الكائن this.name = name ؛ this.age = العمر ؛ /* this.speak = function () {// هنا يشير هذا أيضًا إلى creation object console.log (this.name+"hello") ؛ }} /* createPerson.prototype.gender = "20" ؛ CreatePerson.Prototype. ea = function () {console .log (this.name+ "sfd") ؛ }*/// __proto__: هو: سمة النموذج الأولي في كائن المثيل ، مشيرًا إلى كائن النموذج الأولي المقابل للمشارك المقابل // [[[النموذج الأولي]] // استدعاء var per1 = new CreatePerson ("Ailer" ، "20") ؛ var per2 = New CreatePerson ("Relia" ، "18") ؛ Console .log (per1 extryof createperson) ؛ // == وحدة التحكم الحقيقية .log (per2 مثيل من CreatePerson) ؛ // ==> وحدة التحكم الحقيقية .log (per1.speak == per2.speak) ؛ // == خطأ يعني أن النظام قد فتح منطقتين مختلفتين من التعليمات البرمجية ، مما تسبب في نفايات الذاكرة.إنه أكثر ملاءمة لإنشاء حرفي ، بحيث يولد مُنشئًا ، مُنشئًا طبيعيًا (نمط المصنع) ، ولم يتم التعرف على مثيل الكائن الفرعي ويتم إهدار الذاكرة. استخدم مُنشئًا جديدًا+ ، ويتم التعرف على الكائن الفرعي ، ولكن لا يزال بعض التعليمات البرمجية مكررة ، يتم إهدار الذاكرة ، ويتم إنشاء رمز النموذج الأولي لحلها.
5. وضع النموذج الأولي
وظيفة CreateAnimal (الاسم ، العمر) {//1.2: ربط المعلمات الخارجية إلى السمة المثيل this.name = name ؛ this.age = العمر ؛ } //1.3 ربط نفس السمة على النموذج الأولي (سمة النموذج الأولي ، طريقة النموذج الأولي) createanimal.prototype.gender = "male" ؛ CreateAnimal.prototype.style = function () {console.log (this.name + "ailers") ؛ } ؛ // 2: اتصل بالمنشئ لإنشاء كائن var cat1 = new CreateAnimal ("Xiaohua" ، "2") ؛ var cat2 = new CreateAnimal ("Xiaohua" ، "2") ؛ cat1.style () ؛ console.log (cat1.style == cat2.style) ؛ // تشير الطريقة إلى العنوان نفسه ، وضع السمة في كائن النموذج الأولي لحفظ العنوان//مثيل يمكن أن يحدد الكائن الذي ينتمي إلى [function] // builder builder يمكنه أيضًا استخدامه لتحديده. الفرق بين console.log (cat1 مثيل createAnimal) ؛ // true console.log (cat1 مثيل كائن) ؛ // true console.log (cat1 مثيل كائن) ؛ // true console.log (cat1.constructor == createeanimal) ؛ // true console.log (cat1.constructor == object) ؛ // == false // يحتوي النموذج الأولي للمُنشئ أيضًا على سمة مُنشئ تشير إلى وحدة Console.log (createanimal.prototype. هذه السمة هي سمة مثيل أو نموذج أولي // تنبيه ("الاسم" في CAT1) // TRUE // ALERT ("الجنس" في CAT1) ؛ // true // hasownproperty: لتحديد ما إذا كانت خاصية معينة هي سمة مثيل أو موروثة من سمة النموذج الأولي إذا كان صحيحًا ، آخر غير موجود | لا يعود كاذب. console.log (cat1.hasownproperty ("aaa")) ؛ // خطأ الخاصية غير موجودة إرجاع console.log false. Console Clasole.log (النمط ISProtype ("الجنس" ، CAT1)) ؛ // وظيفة ISProtype (السجود ، OBJ) {if (السجود في OBJ) {if (! obj.hasownproperty (brofstring)) {return true ؛ } آخر {return false ؛ }} آخر {return false ؛ }}/*function isProperty (كائن ، خاصية) {// ادعى ما إذا كانت هناك خاصية في عودة النموذج الأولي! object.hasownproperty (property) && (property in Object) ؛}*/وضع النموذج الأولي الديناميكي
// تهيئة وظيفة النموذج الأولي لكل (الاسم ، العمر ، الجنس) {this.name = name ؛ this.age = العمر ؛ this.gender = الجنس ؛ // تنفيذ مرة واحدة فقط عند تهيئة النموذج الأولي if (typeof this.sayname! = "function") {person.prototype.sayname = function () {Alert (this.name) ؛ }}}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.