الفرق بين المراجعتين ل"JavaScript/Symbol/toStringTag"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
 
ط (استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}')
 
سطر 66: سطر 66:
 
* مسودة المعيار [https://tc39.github.io/ecma262/#sec-symbol.tostringtag ECMAScript Latest Draft].
 
* مسودة المعيار [https://tc39.github.io/ecma262/#sec-symbol.tostringtag ECMAScript Latest Draft].
 
* معيار [http://www.ecma-international.org/ecma-262/6.0/#sec-symbol.tostringtag ECMAScript 2015 (6th Edition)]‎.  
 
* معيار [http://www.ecma-international.org/ecma-262/6.0/#sec-symbol.tostringtag ECMAScript 2015 (6th Edition)]‎.  
[[تصنيف:JavaScript]]
+
[[تصنيف:JavaScript|{{SUBPAGENAME}}]]
[[تصنيف:JavaScript Global Objects]]
+
[[تصنيف:JavaScript Global Objects|{{SUBPAGENAME}}]]
[[تصنيف:JavaScript Symbol]]
+
[[تصنيف:JavaScript Symbol|{{SUBPAGENAME}}]]

المراجعة الحالية بتاريخ 15:38، 28 يناير 2018

الرمز المعروف 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 هذه الميزة.

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