المعلمة:
(1) OBJ
مطلوب. اسم المتغير الذي يتم تعيين كائن الكائن إليه.
(2) القيمة
خياري. أي نوع من البيانات البدائية javaScript (الرقم ، المنطقية ، أو السلسلة). إذا كانت القيمة كائنًا ، فسيكون الكائن الذي تم إرجاعه غير معدّل. إذا كانت القيمة لاغية ، أو "غير محددة" ، أو "غير متوفر" ، يتم إنشاء كائن بدون محتوى.
طرق كائن الكائن
عند استخدام الكائن كمؤسس ، يمكن أن يقبل المعلمة. إذا كانت المعلمة كائنًا ، فستعود مباشرة إلى الكائن ؛ إذا كانت قيمة النوع الأصلي ، فسيقوم بإرجاع كائن Wrapper المقابل للقيمة. باستخدام هذا ، يمكنك كتابة وظيفة تحدد ما إذا كان المتغير كائنًا.
دالة isObject (القيمة) {قيمة الإرجاع === كائن (القيمة) ؛}هناك طريقتان لنشر طريقة على كائن كائن.
نشر في الكائن نفسه
تم نشره في كائن Object.protype
تشبه طريقة الكائن. معلماتهم كلها كائن ، وكلها تعيد صفيفًا ، وأعضاء الصفيف كلهم أسماء سمات للكائن نفسه (بدلاً من الوراثة). الفرق بين الاثنين هو أن السابق يعود فقط سمات قابلة للتسوية ، في حين أن الأخير يعيد أيضًا أسماء السمات غير المسبقة. نظرًا لأن المصفوفة لها طول سمة لا يطاق ، يتم اجتياز الصفيف بشكل عام باستخدام الكائن.
لا يوفر JavaScript طريقة لحساب عدد خصائص الكائن ، والتي يمكن الحصول عليها من خلال Object.Keys (O) .Length و Object.getOndPropertyNames (O).
يتم استخدام طريقة Object.Observe لمراقبة التغييرات في خصائص الكائن.
طرق سلسلة النموذج الأولي:
Object.create (): إنشاء كائن جديد والنموذج الأولي للكائن.
Object.getPrototypeof (): يحصل على كائن النموذج الأولي للكائن.
طرق كائن كائن مثيل
Object.prototype.valueof (): تتمثل وظيفة طريقة ValueOF في إرجاع قيمة الكائن ، وعلى الافتراضي ، يتم إرجاع الكائن نفسه. الغرض الرئيسي من هذه الطريقة هو أنه سيتم استدعاء هذه الطريقة افتراضيًا عندما يقوم JavaScript بتحويل النوع تلقائيًا.
Object.prototype.toString (): وظيفة طريقة toString هي إرجاع نموذج السلسلة لكائن. عند استخدام كائن لإضافة السلسلة ، يتم استدعاء طريقة tostring تلقائيًا.
باستخدام طريقة الاتصال ، يمكنك استدعاء الكائن. قيمة الإرجاع لطريقة tostring لأنواع البيانات المختلفة هي كما يلي:
القيمة: إرجاع [رقم الكائن]
السلسلة: إرجاع [سلسلة الكائنات]
منطقية: عودة [كائن منطقي]
غير محدد: العودة [كائن غير محدد]
Null: Return [Object NULL]
الكائن: إرجاع "[كائن" + اسم المنشئ + "]"] "
Object.prototype.toString.call (2) // "[رقم الكائن]" Object.Protype.toString.call ('') // "[سلسلة الكائن]"باستخدام هذه الميزة ، يمكنك كتابة وظيفة حكم النوع أكثر دقة من مشغل typeof.
var type = function (o) {var s = object.prototype.toString.call (o) ؛ إرجاع S.Match (// [كائن (.*؟)/]/) [1] .ToLowerCase () ؛} ؛ type ({}) ؛ // "كائن" نوع ([]) ؛ // "Array" Type (5) ؛ // "رقم"استنادًا إلى وظيفة النوع أعلاه ، يمكنك أيضًا إضافة طريقة تحدد نوعًا معينًا من البيانات على وجه التحديد.
['null' ، 'undefined' ، 'object' ، 'array' ، 'string' ، 'number' ، 'boolean' ، 'function' ، 'regexp' ، 'element' ، 'nan' ، 'Infinite']. } ؛}) ؛ type.isobject ({}) ؛ // truetype.isnumber (nan) ؛ // falsetype.iseLement (document.createElement ('div')) ؛ // حقيقينموذج السمة للكائن
في JavaScript ، كل سمة لها كائن سمات مقابل ، والذي يحفظ بعض معلومات التعريف الخاصة بالسباحة. استخدم طريقة الكائن. يحتوي كائن السمات على معلومات التعريف التالية:
القيمة: تمثل قيمة هذه الخاصية ، والتي يتم تحديدها افتراضيًا (طالما أن أحد القابلة للكتابة والقابلة للتكوين صحيح ، يمكن تغييرها).
قابلة للكتابة: يشير إلى ما إذا كان يمكن تغيير قيمة هذه الخاصية ، فالأف الافتراضي صحيحة.
التعداد: يشير إلى ما إذا كانت السمة غير قابلة للتنفيذ ، أو الافتراضي صحيحة ، أي أن السمة ستظهر في عمليات مثل ... in و Object.keys (). بشكل عام ، فإن الخصائص الأصلية للنظام (أي الخصائص غير المعرفة من قبل المستخدم) ليست قابلة للتعداد.
يشير إلى "التكوين" ، والافتراضات إلى True. إذا تم تعيينه على خطأ ، فهذا يعني أنه لا يمكن حذف السمة ، ويجب عدم تغيير كائن السمات (باستثناء سمة القيمة ، إذا كانت القابلة للكتابة صحيحة ، فلا يزال من الممكن تغيير القيمة) ، أي أن السمة القابلة للتكوين تتحكم في كائن السمات.
وظيفة القيمة (getter) التي تمثل هذه الخاصية ، والافتراضات إلى غير محددة.
وظيفة تخزين القيمة (setter) التي تمثل هذه الخاصية ، الافتراضية إلى غير محددة.
var o = {p: 'a'} ؛ object.getownProperTyDescriptor (o ، 'p') ؛ // object {// value: "a" ، // crinable: true ، // enumeries: true ، // configable: true //}تتيح لك Complet.DefineProperty طريقة تحديد أو تعديل سمة عن طريق تحديد كائن سمة ، ثم إرجاع الكائن المعدل. التنسيق كما يلي:
Object.DefineProperty (الكائن ، PropertyName ، attributesoSbject)
تقبل طريقة الكائن. من خلال هذه الطريقة ، تكون القيم الافتراضية للخصائص القابلة للكتابة ، القابلة للتكوين ، والتعداد لكائن الخاصية خاطئة.
object.defineProperty (o ، "p" ، {value: "bar"}) ؛ object.getOndProperTyDescriptor (o ، 'p') ؛ // object {// value:إذا تم تعريف خصائص متعددة أو تعديلها مرة واحدة ، فيمكنك استخدام Object.DefineProperties. تجدر الإشارة إلى أنه بمجرد تحديد وظيفة القيمة (أو مجموعة وظيفة تخزين القيمة) ، لا يمكن تعيين القابل للكتابة إلى صواب ، أو يتم تعريف سمة القيمة في نفس الوقت ، وإلا سيتم الإبلاغ عن خطأ.
var o = object.defineProperties ({} ، {p1: {value: 123 ، enumeries: true} ، p2: {value: "abc" ، enumerable: true} ، p3: {get: function () {return this.p1 + this.p2} ، redible: true ، true}}}}) ؛يمكن استخدام التعداد لتعيين الخاصية "السرية". إذا كان تعداد الخاصية غير قابلة لخطأ ، فلن تحصل طريقة orop for..in ، وطريقة jould.keys ، وطريقة json.stringify على الخاصية ، ولكن يمكن الحصول على قيمتها مباشرة من خلال O.XX.
الفرق بين for ... في الحلقة وطريقة الكائن. إذا كنت بحاجة إلى الحصول على جميع خصائص الكائن نفسه ، بغض النظر عن قيمة التعداد ، فيمكنك استخدام Object.GetOwnPropertyNames.
يحدد التكوين ما إذا كان يمكن حذف المتغير. عندما يتم الإعلان عن متغير باستخدام أمر VAR ، يكون المتغير قابل للتكوين خطأ ، وعندما يتم الإعلان عن متغير باستخدام أمر VAR (أو يتم الإعلان عن متغير باستخدام تعيين السمة) ، يكون تكوين المتغير صحيحًا. هذا يعني أن الحذف يمكنه فقط حذف خصائص الكائن.
var a1 = 1 ؛ // configable: falsesea2 = 1 ؛ // قابلة للتكوين: صحيح (أي ما يعادل this.a2 = 1)
بالإضافة إلى التعريف المباشر ، يمكن أيضًا تعريف الخصائص باستخدام وظائف الإكسسور. من بينها ، تسمى وظيفة تخزين القيمة setter ، والتي تستخدم الأمر set ؛ تسمى وظيفة اكتساب القيمة getter ، والتي تستخدم الأمر get. باستخدام وظيفة الوصول ، يمكن تحقيق الربط ثنائي الاتجاه بين كائنات البيانات وكائنات DOM.
Object.defineProperty (user ، 'name' ، {get: function () {return document.getElementById ("foo"). value} ، set: function (newValue) {document.getElementById (التحكم في حالة الكائن
يوفر JavaScript ثلاث طرق للتحكم بدقة في حالة القراءة والكتابة للكائن ومنع تغيير الكائن. أضعف طبقة من الحماية هي منع الحواس ، تليها الختم ، أقوى تجميد.
يمكن أن تجعل طريقة provent.PreventStextensions كائنًا غير قادر على إضافة خصائص جديدة ، ولكن يمكنها استخدام الأمر DELETE لحذف خصائصه الحالية. يمكن استخدام طريقة الكائن.
طريقة الكائن. يقوم Object.seal أيضًا بتعيين السمة القابلة للتكوين لكائن السمات للسمات الموجودة على FALSE ، بحيث لم يعد من الممكن تغيير كائن السمات. يتم استخدام طريقة الكائن.
يمكن أن تجعل طريقة الكائن. يتم استخدام طريقة الكائن.
استخدم الطرق المذكورة أعلاه لقفل قابلية كتابة الكائن ، ولكن لا يزال بإمكانك إضافة خصائص إليه عن طريق تغيير كائن النموذج الأولي للكائن.
var o = new Object () ؛ object.preventextensions (o) ؛ var proto = object.getProtypeof (o) ؛ proto.t = "hello" ؛ ot // hello
أحد الحلول هو تجميد النموذج الأولي أيضًا.
var o = object.seal (object.create (object.freeze ({x: 1}) ، {y: {value: 2 ، crinsable: true}})) ؛ object.getProtypeOf (o) .t = "hello" ؛ ot // undefinedملاحظة:
يتم تضمين كائن كائن في جميع كائنات JavaScript الأخرى ؛ جميع أساليبها وخصائصها متاحة لجميع الكائنات الأخرى. يمكن إعادة تعريف الأساليب في الكائنات المعرفة من قبل المستخدم واستدعاءها بواسطة JavaScript في الوقت المناسب. طريقة tostring هي مثال على طريقة كائن معاد تحديدها بشكل متكرر.
في مرجع اللغة هذا ، يتضمن وصف كل طريقة كائن معلومات التنفيذ الافتراضية والكائن الخاصة لكائن JavaScript الداخلي.
فيما يتعلق بتوافق IE ، فإن مستند MSDN الخاص بـ Microsoft هو "تم تقديم كائن كائن في Internet Explorer قبل Internet Explorer 6" ، لذلك لا تقلق ~