Symbol.toStringTag

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

الرمز المعروف Symbol.toStringTag يُشير إلى خاصيةٍ تحمل سلسلةً نصيةً التي تُستخدَم في إنشاء الوصف النصي الافتراضي للكائن، وتستخدمها الدالة Object.prototype.toString()‎ داخليًا.

سمات الخاصية Symbol.toStringTag
قابلة للكتابة لا
قابلة للإحصاء لا
قابلة للضبط لا

الوصف

العديد من أنواع البيانات في لغة JavaScript لها وسوم نصية (tags):

Object.prototype.toString.call('foo');     // "[object String]"
Object.prototype.toString.call([1, 2]);    // "[object Array]"
Object.prototype.toString.call(3);         // "[object Number]"
Object.prototype.toString.call(true);      // "[object Boolean]"
Object.prototype.toString.call(undefined); // "[object Undefined]"
Object.prototype.toString.call(null);      // "[object Null]"
// ...

وهنالك دوال أخرى عُرِّفَ فيها الرمز Symbol.toStringTag:

Object.prototype.toString.call(new Map());         // "[object Map]"
Object.prototype.toString.call(function* () {});   // "[object GeneratorFunction]"
Object.prototype.toString.call(Promise.resolve()); // "[object Promise]"
// ...

وعند إنشاء صنف كائنات جديد، فإنَّ الوسم النصي الافتراضي الذي تعطيه JavaScript له هو "Object":

class ValidatorClass {}

Object.prototype.toString.call(new ValidatorClass()); // "[object Object]"

لكن بمساعدة الرمز Symbol.toStringTag، فسنتمكن من ضبط الوسم النصي كما نشاء:

class ValidatorClass {
  get [Symbol.toStringTag]() {
    return 'Validator';
  }
}

Object.prototype.toString.call(new ValidatorClass()); // "[object Validator]"

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

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي 49 51 غير مدعومة نعم نعم

على النقيض من متصفح IE، يدعم متصفح Edge هذه الميزة.

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