الكائن Object في JavaScript

من موسوعة حسوب
مراجعة 15:36، 28 يناير 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات) (استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}')

الدالة البانية Object تُنشِئ كائنًا.

البنية العامة

// الشكل المختصر لتهيئة الكائن
{ [ nameValuePair1[, nameValuePair2[, ...nameValuePairN] ] ] }

// استدعاء الدالة البانية
new Object([value])

nameValuePairN

أزواج من الأسماء (السلاسل النصية) والقيم (أيّ نوع من القيم) التي يُفصل فيها بين الاسم والقيمة بنقطتين رأسيتين :.

value

أيّة قيمة في JavaScript.

الوصف

الدالة البانية Object تُغلِّف (wrap) القيمة المعطية في كائن، وإذا كانت القيمة المعطية null أو undefined، فستُنشِئ وتُعيد كائنًا فارغًا، وفيما عدا ذلك فستُنشِئ وتُعيد كائنًا من النوع المناسب للقيمة المعطية، ولو كانت القيمة المعطية هي كائن فستُعاد القيمة نفسها.

إذا استدعيت الدالة Object دون الكلمة المحجوزة new (التي تُستخدَم مع الدوال البانية)، فسيكون سلوكها مماثلًا للتعبير new Object()‎.

انظر أيضًا إلى تعبير تهيئة الكائنات (object initializer أو literal syntax).

الخاصيات التابعة للدالة البانية Object

Object.length

تملك هذه الخاصية القيمة 1.

Object.prototype

تسمح هذه الخاصية بإضافة خاصيات متاحة لجميع الكائنات التي نوعها هو Object.

الدوال التابعة للدالة البانية Object

Object.assign()‎

نسخ قيم جميع الخاصيات القابلة للإحصاء التابعة للكائن من كائنٍ مصدريٍ أو أكثر إلى الكائن الهدف.

Object.create()‎

إنشاء كائن جديد له كائن prototype معيّن، مع ضبط خاصياته.

Object.defineProperty()‎

إضافة خاصية مُسماة موصوفة بواصف (descriptor) معيّن إلى الكائن.

Object.defineProperties()‎

إضافة خاصيات مُسماة موصوفة بواصفات (descriptors) معيّنة إلى الكائن.

Object.entries()‎

إعادة مصفوفة تحوي على الخاصيات القابلة للإحصاء التابعة لأحد الكائن على شكل الأزواج [key, value].

Object.freeze()‎

تجميد الكائن، أي لن تتمكن بقية الشيفرات من تعديل أو حذف خاصياته.

Object.getOwnPropertyDescriptor()‎

إعادة واصف الخاصية (property descriptor) للخاصية المسماة في أحد الكائنات.

Object.getOwnPropertyDescriptors()‎

إعادة واصف الخاصية (property descriptor) لجميع خاصيات أحد الكائنات.

Object.getOwnPropertyNames()‎

إعادة مصفوفة تحتوي على أسماء جميع الخاصيات التابعة مباشرةً للكائن، سواءً كانت قابلةً للإحصاء أم لم تكن كذلك.

Object.getPrototypeOf()‎

إعادة خاصية prototype للكائن المعطي.

Object.is()‎

معرفة إن كانت قيمتان متساويتين، ويمكن استخدام هذه الدالة لمساواة قيمة NaN (وهذا يختلف عن استخدام معاملات المقارنة).

Object.isExtensible()‎

تحديد إن كان بالإمكان توسعة أحد الكائنات.

Object.isFrozen()‎

تحديد إن كان أحد الكائنات مجمَّدًا.

Object.isSealed()‎

تحديد إن كان أحد الكائنات مختومًا.

Object.keys()‎

إعادة مصفوفة تحتوي على أسماء جميع الخاصيات القابلة للإحصاء والتابعة للكائن مباشرةً.

Object.preventExtensions()‎

منع توسعة الكائن.

Object.seal()‎

منع بقية شيفرات البرنامج من حذف خاصيات الكائن.

Object.setPrototypeOf()‎

ضبط كائن prototype (أي خاصية [[Prototype]] الداخلية).

Object.values()‎

إعادة مصفوفة من قيم الخاصيات القابلة للإحصاء والتابعة مباشرةً لكائنٍ ما.

الكائن prototype

جميع الكائنات في JavaScript تنحدر من الكائن Object، وجميع الكائنات ترث الدوال والخاصيات الموجودة في الكائن Object.prototype، وصحيحٌ أنَّ بالإمكان إعادة الكتابة على ذلك الكائن (مثلًا، الكائنات الأخرى تعيد الكتابة فوق خاصية constructor وتوفِّر دوال toString()‎ خاصة بها)، لكن التعديلات على كائن prototype التابعة للكائن Object ستكون متاحة لجميع الكائنات ما لم يُعاد تعريف تلك الدوال والخاصيات ضمن سلسلة prototype.

الخاصيات

Object.prototype.constructor

تحديد ما هي الدالة التي ستُنشِئ الكائن.

Object.prototype.__proto__‎

الإشارة إلى الكائن prototype التابعة لنسخة الكائن.

Object.prototype.__noSuchMethod__‎

السماح بتعريف دالة التي ستُنفَّذ عند محاولة استدعاء خاصية غير موجودة في الكائن. هذه الخاصية غير معيارية وغير مدعومة في أغلبية المتصفحات.

Object.prototype.__count__‎

كانت تستعمل للحصول على عدد الخاصيات القابلة للإحصاء الموجودة في كائن مُعرَّف من قبل المستخدم، لكن هذه الخاصية محذوفة وغير مدعومة في أي متصفح.

Object.prototype.__parent__‎

كانت تستعمل للإشارة إلى سياق تنفيذ الكائن (object's context)، لكن هذه الخاصية محذوفة وغير مدعومة في أي متصفح.

الدوال

Object.prototype.__defineGetter__()‎

ربط دالة مع خاصيةٍ ما، وستُنفَّذ تلك الدالة عند محاولة الوصول إلى تلك الخاصية، وستُعاد القيمة المعادة من الدالة.

Object.prototype.__defineSetter__()‎

ربط دالة مع خاصيةٍ ما، وستُنفَّذ تلك الدالة عند محاولة تعديل تلك الخاصية.

Object.prototype.__lookupGetter__()‎

إعادة الدالة المرتبطة مع الخاصية المُحدَّدة باستخدام الدالة ‎__defineGetter__()‎.

Object.prototype.__lookupSetter__()‎

إعادة الدالة المرتبطة مع الخاصية المُحدَّدة باستخدام الدالة ‎__defineSetter__()‎.

Object.prototype.hasOwnProperty()‎

إعادة قيمة منطقية تُشير إذا كان الكائن يملك الخاصية المُحدَّدة مباشرةً (أي أنَّه لم يرثها من سلسلة prototype).

Object.prototype.isPrototypeOf()‎

إعادة قيمة منطقية تُشير إذا كان الكائن التي اُستدعيت الدالة عليه موجودٌ في سلسلة prototype للكائن المُحدَّد.

Object.prototype.propertyIsEnumerable()‎

إعادة قيمة منطقية تُشير إذا كانت الخاصية (attribute) الداخلية [[Enumerable]] مضبوطةً.

Object.prototype.toSource()‎

إعادة سلسلة نصية تحتوي على الشيفرة المصدرية التي تُمثِّل الكائن الذي استدعى هذه الدالة، ويمكن استخدام هذه القيمة لإنشاء كائن جديد. هذه الخاصية محذوفة وغير مدعومة في أغلبية المتصفحات.

Object.prototype.toString()‎

إعادة تمثيل نصيّ للكائن.

Object.prototype.unwatch()‎

إزالة نقطة مراقبة (watchpoint) من إحدى خاصيات الكائن. هذه الخاصية محذوفة وغير مدعومة في جميع المتصفحات.

Object.prototype.valueOf()‎

إعادة القيمة الأوليّة للكائن المُحدَّد.

Object.prototype.watch()‎

إضافة نقطة مراقبة (watchpoint) إلى إحدى خاصيات الكائن. هذه الخاصية محذوفة وغير مدعومة في جميع المتصفحات.

Object.prototype.eval()‎

تقدير قيمة شيفرة JavaScript في سياق تنفيذ الكائن الحالي. هذه الخاصية محذوفة وغير مدعومة في جميع المتصفحات، ويجب استخدام الدالة eval() بدلًا منها.

أمثلة

استخدام Object مع القيمتين undefined و null

الأمثلة الآتية تؤدي إلى تخزين كائن Object فارغ في المتغير o:

var o = new Object();
var o = new Object(undefined);
var o = new Object(null);

استخدام Object لإنشاء قيم منطقية Boolean

المثالان الآتيان يُخزِّنان قيمًا منطقيةً من النوع Boolean في المتغير o:

// تكافئ o = new Boolean(true);
var o = new Object(true);

// تكافئ o = new Boolean(false);
var o = new Object(Boolean());

دعم المتصفحات

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي نعم نعم نعم نعم نعم

انظر إلى صفحة كل دالة من الدوال التابعة للكائن Object لتفاصيل عن دعم المتصفحات لها.

مصادر ومواصفات