في JavaScript ، يتم تعريف الكائنات على أنها "مجموعة من السمات غير المرتبة التي يمكن أن تحتوي خصائصها على القيم أو الكائنات أو الوظائف الأساسية." بشروط Layman ، يمكننا أن نفهم الكائنات كمجموعات من أزواج القيمة ، حيث يمكن أن تكون القيم بيانات أو وظائف.
عادة ما يكون هناك طريقتان لإنشاء كائن مخصص. الأول هو إنشاء مثيل لكائن ثم إضافة خصائص وطرق إليه ، مثل:
var person = new Object () ؛ person.name = "scott" ؛ person.age = 24 ؛ person.sayname = function () {Alert (person.name) ؛ }الطريقة الثانية هي الطريقة الحرفية للكائن. يوصى بشكل عام باستخدام هذه الطريقة لإنشاء كائنات ، على سبيل المثال:
var person = {name: "Scott" ، العمر: 24 ، sayname: function () {Alert (this.name) ؛ }}نوع السمة
هناك خصائصان مختلفتان محددتان في JavaScript: خصائص البيانات وخصائص الملحقات. تُستخدم سمات البيانات عمومًا لتخزين قيم البيانات ، في حين أن سمات الإكسسور تؤدي عمومًا عمليات الحصول على/تعيين ولا يمكن تخزين قيم البيانات مباشرة. في ES5 ، نحدد السمات لوصف ميزات مختلفة من الخصائص. في JavaScript ، لا يمكننا الوصول مباشرة إلى الميزة ، لذلك نضعها في أزواج من الأقواس المربعة ، مثل [[التعداد]].
• خصائص البيانات
تصف سمات البيانات سلوكهم بشكل أساسي:
1. [[التكوين]]: الافتراضي صحيح. يشير إلى ما إذا كان يمكن حذف السمة لإعادة تعريف السمة ، أو ما إذا كان يمكن تعديل خصائص السمة ، أو ما إذا كان يمكن تعديل السمة إلى سمة الملحق ؛
2. [[التعداد]]: الافتراضي صحيح. يشير إلى ما إذا كان يمكن إرجاع السمة من خلال حلقة من أجل الوصول ؛
3. [[قابلة للكتابة]]: الافتراضي صحيح. يشير إلى ما إذا كان يمكن تعديل قيمة السمة.
4. [[القيمة]]: القيمة الافتراضية غير محددة. يمثل قيمة البيانات التي تحتوي على السمة. يتم تنفيذ قيم القراءة والكتابة من هذا الموقف.
بالنسبة للخصائص المحددة أعلاه مباشرة على كائن الشخص ، يتم تعيين خصائص [[التكوين]] ، [[التعداد]] ، و [[القابلة للكتابة]] على صواب افتراضيًا ، في حين يتم ضبط خصائص [[value]] على قيمة محددة. إذا كنت ترغب في تعديل الخصائص الافتراضية لخاصية ما ، فيمكنك استخدام الكائن. تتلقى هذه الطريقة ثلاث معلمات: الكائن الذي يوجد فيه الخاصية ، واسم الخاصية ، وكائن واصف. يمكن أن يحتوي كائن الوصف على واحد أو أكثر من الخصائص الأربع المذكورة أعلاه. الأمثلة على النحو التالي:
var person = {name: "scott"} object.defineProperty (person ، "name" ، {false ؛}) console.log (person.name) ؛ // "scott" person.name = "Evan" ؛ console.log (person.name) ؛ // "سكوت"اضبط خاصية اسم الشخص القابلة للكتابة على اسم اسم كائن إلى FALSE. قيمة هذه السمة غير معدلة ، لذلك سيتم تجاهل عملية نسخ هذه السمة مباشرة.
var person = {name: "scott"} object.defineProperty (person ، "name" ، {configable: false ؛}) console.log (person.name) ؛ // "Scott" Delete Person.name ؛ console.log (person.name) ؛ // "سكوت"يمكن ملاحظة أنه عندما يتم ضبط قيمة الخاصية القابلة للتكوين لسمة الاسم على خطأ ، فهذا يعني أنه لا يمكن حذف السمة من الكائن. ولكن تجدر الإشارة إلى أنه عندما يتم تعريف خاصية على أنها غير قابلة للتكوين ، لا يمكن إرجاعها إلى تكوينها. في هذا الوقت ، سيؤدي تعديل ميزات أخرى بخلاف الكتابة إلى حدوث خطأ ، على سبيل المثال:
var person = {name: "scott"} object.defineProperty (person ، "name" ، {configable: false ؛}) object.defineProperty (person ،وهذا يعني ، بعد تعديل الميزة القابلة للتكوين إلى خطأ ، ستكون هناك قيود عند تعديل الميزات الأخرى.
• خصائص الملحقات
لا تحتوي سمة الملحقات على قيم بيانات. أنه يحتوي على زوج من وظائف getter و setter. عندما تتم قراءة سمة الملحقات ، يتم استدعاء وظيفة getter وإعادة القيمة الصحيحة ؛ عند كتابة سمة الملحقات ، يتم استدعاء وظيفة Setter ويتم تمرير القيمة الجديدة ، وتكون وظيفة Setter مسؤولة عن معالجة البيانات. هذه الخاصية لها أربع خصائص:
1. [[التكوين]]: الافتراضي صحيح. يشير إلى ما إذا كان يمكن حذف السمة لإعادة تعريف السمة ، أو ما إذا كان يمكن تعديل خصائص السمة ، أو ما إذا كان يمكن تعديل السمة إلى سمة الملحق ؛
2. [[التعداد]]: الافتراضي صحيح. يشير إلى ما إذا كان يمكن إرجاع السمة من خلال حلقة من أجل الوصول ؛
3. [[GET]]: الوظيفة المسمى عند قراءة سمات ، الافتراضي غير محدد ؛
4.
لا يمكن تعريف خصائص الإكسسور مباشرة ، يجب تحديدها من خلال وظيفة defiNe.DefineProperty () ، على سبيل المثال:
var person = {_name: "scott" ، _age: 24 ، _tel: 86247} ؛ . . . console.log (person.name) ؛ // "scott" person.name = "Evan" ؛ console.log (person.name) ؛ // "Scott" ، تعديل سمة الاسم غير صالح. // غير محدد ، شخصية السمة غير القابلة للقراءة. console.log (person._age) ؛ // 25 ، console.log (person.tel) ؛ // "86247" ، السمة القابلة للقراءة person.tel = "13975" ؛ console.log (person.tel) ؛ // "13975" ، يمكن إجراء التعديليشير السطح السفلي قبل السمة إلى سمة لا يمكن الوصول إليها إلا من خلال طريقة الكائن. عندما نستخدم person.name ، فإننا نسمي بالفعل وظيفة getter لسمة الاسم ، وعندما نخصص قيمة إلى شخص. اسم ، نطلق على وظيفة Setter لسمة الاسم ، بحيث تكون العلاقة بين السمة والملحق واضحة للغاية.
تحديد سمات متعددة
في الواقع ، يوفر لنا ES5 طريقة لتحديد خصائص متعددة لكائن ، وهي Object.DefineProperties (). تتلقى هذه الوظيفة معلمتين ، الكائن الذي توجد فيه الخاصية ، والكائن المكون من السمات التي تحتاج إلى تعديل وكائنات الواصف. على سبيل المثال ، قم بتعديل المثال أعلاه لتحديد خصائص متعددة في وقت واحد ، على النحو التالي:
var person = {_name: "scott" ، _age: 24 ، _tel: 86247} ؛ Object.DefineProperties (الشخص ، {name: {get: function () {return this._name ؛}} ، العمر: {set: function (p) {this._age = p ؛}} ، tel: {get: function () {return this._tel ؛قراءة الخصائص
يوفر ES5 الكائن. تتلقى هذه الطريقة معلمتين: الكائن الذي توجد فيه السمة واسم سمة واصفه المراد قراءته. ستؤدي النتيجة إلى إرجاع كائن. إذا كانت سمة ملحق ، فإن الكائنات التي تم إرجاعها تتضمن التكوين ، وتعداد ، و Get and Set ؛ إذا كانت سمة بيانات ، فإن خصائص الكائن الذي تم إرجاعه تتضمن التكوين ، والتعداد ، والقابل للكتابة والقيمة. على سبيل المثال أعلاه ، استخدم ما يلي:
var person = {_name: "scott" ، _age: 24 ، _tel: 86247} ؛ Object.DefineProperties (الشخص ، {name: {get: function () {return this._name ؛}} ، العمر: {set: function (p) {this._age = p ؛}} ، tel: {get: function () {return this._tel ؛ var prisonser = object.getOntOndPropertyDescripter (الشخص ، "tel") ؛ console.log (descripter.value) ؛ // undefined console.log (descripter.Enumerfort) ؛ // false console.log (typeof descriptioner.get) ؛ //"وظيفة"يحصل الرمز أعلاه على خاصية TEL لكائن الشخص. نظرًا لأنها خاصية ملحق ، فإن قيمتها غير محددة ، وتعداد غير قابلة للتطبيق ، والحصول على مؤشر إلى وظيفة getter.
تناقش المقالة أعلاه باختصار سمات بيانات JavaScript وسمات الملحقات هي كل المحتوى الذي شاركته معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.