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 |
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2015 (6th Edition).
- معيار ECMAScript 5.1.