Symbol.toPrimitive

من موسوعة حسوب
مراجعة 07:18، 2 ديسمبر 2017 بواسطة عبد اللطيف ايمش (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

الرمز المعروف Symbol.toPrimitive يُشير إلى خاصيةٍ قد أُسنِدَت إليها دالةٌ التي يمكن أن تستدعى لتحويل الكائن إلى القيمة الأوليّة المناسبة.

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

الوصف

بمساعدة الخاصية Symbol.toPrimitive (التي تُشير إلى دالة)، يمكننا تحويل الكائنات إلى القيم الأوليّة الموافقة لها، وهذه الدالة تُستدعى مع الوسيط النصي hint، والذي يُحدِّد ما هو النوع المُفضَّل للقيمة الأوليّة المُعادة، ويمكن أن تكون قيمة هذا الوسيط "number" أو "string" أو "default".

أمثلة

المثال الآتي يبيّن كيف يمكن أن تُستخدَم الخاصية Symbol.toPrimitive لتعديل القيمة الأوليّة المعادة من كائنٍ ما. لاحظ كيف اختلفت قيمة الكائن obj2 عند استخدامه في سياقٍ عددي وسياقٍ نصيّ:

var obj1 = {};
console.log(+obj1);     // NaN
console.log(`${obj1}`); // "[object Object]"
console.log(obj1 + ''); // "[object Object]"


var obj2 = {
  [Symbol.toPrimitive](hint) {
    if (hint == 'number') {
      return 10;
    }
    if (hint == 'string') {
      return 'hello';
    }
    return true;
  }
};
console.log(+obj2);     // 10        -- hint is "number"
console.log(`${obj2}`); // "hello"   -- hint is "string"
console.log(obj2 + ''); // "true"    -- hint is "default"

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

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

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

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