Object.isExtensible()‎

من موسوعة حسوب

الدالة Object.isExtensible()‎ تُحدِّد إن كان أحد الكائنات قابلًا للتوسعة (أي يمكن إضافة خاصيات جديدة إليه).

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

Object.isExtensible(obj)

obj

الكائن الذي نريد التحقق منه.

القيمة المعادة

قيمة منطقية (Boolean) تبيّن إذا كان الكائن قابلًا للتوسعة أم لا.

الوصف

يمكن توسعة الكائنات افتراضيًا، أي يمكن إضافة خاصيات جديدة إليها، لكن يمكن جعل العنصر غير قابلٍ للتوسعة باستخدام الدالة Object.preventExtensions() أو Object.seal() أو Object.freeze()‎.

لاحظ أنَّه في معيار ECMAScript 5 كان استعمال هذه الدالة على وسيطٍ ليس كائنًا (أي قيمةً أوليةً) سيؤدي إلى رمي TypeError، لكن بدءًا من ECMAScript 2015 (أي ES6) فستُعامل الوسائط التي لا تُمثِّل كائنات على أنها كائنات غير قابلة للتوسعة، أي أنها ستُعيد القيمة false:

Object.isExtensible(1);
// TypeError: 1 is not an object (ES5)

Object.isExtensible(1);
// false                         (ES2015)

أمثلة

مثال عن كائنٍ جديدٍ يوضِّحُ أنَّه قابلٌ للتوسعة:

var empty = {};
Object.isExtensible(empty); // === true

لكن يمكن تعديل ذلك باستخدام الدالة Object.preventExtensions():

Object.preventExtensions(empty);
Object.isExtensible(empty); // === false

أما الكائنات المختومة (sealed objects) فهي غير قابلة للتوسعة:

var sealed = Object.seal({});
Object.isExtensible(sealed); // === false

وكذلك الأمر بالنسبة إلى الكائنات المُجمَّدة (frozen objects):

var frozen = Object.freeze({});
Object.isExtensible(frozen); // === false

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

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي 6 4 9 12 5.1

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