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

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