الفرق بين المراجعتين لصفحة: «JavaScript/Object/toString»

من موسوعة حسوب
 
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}'
 
سطر 81: سطر 81:
*معيار [http://www.ecma-international.org/ecma-262/5.1/#sec-15.2.4.2 ECMAScript 5.1].
*معيار [http://www.ecma-international.org/ecma-262/5.1/#sec-15.2.4.2 ECMAScript 5.1].
*معيار [http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%201st%20edition,%20June%201997.pdf ECMAScript 1st Edition].
*معيار [http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%201st%20edition,%20June%201997.pdf ECMAScript 1st Edition].
[[تصنيف:JavaScript]]
[[تصنيف:JavaScript|{{SUBPAGENAME}}]]
[[تصنيف:JavaScript Global Objects]]
[[تصنيف:JavaScript Global Objects|{{SUBPAGENAME}}]]
[[تصنيف:JavaScript Object]]
[[تصنيف:JavaScript Object|{{SUBPAGENAME}}]]

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

الدالة Object.prototype.toString()‎ تُعيد سلسلةً نصيةً تُمثِّل الكائن.

البنية العامة

obj.toString()

القيمة المعادة

سلسلة نصيّة تُمثِّل الكائن.

الوصف

يملك كل كائن الدالة toString()‎ التي ستستدعى تلقائيًا عندما يراد تمثيل الكائن كقيمة نصية أو عند الإشارة إلى الكائن في مكانٍ تتوقع JavaScript توفير سلسلة نصية فيه؛ وافتراضيًا توجد الدالة toString()‎ في جميع الكائنات التي تنحدر من الكائن Object؛ وإذا لم يُعاد تعريف هذه الدالة في الكائن المُخصَّص فستُعيد القيمة "[object type]"، إذ إنَّ type هو نوع الكائن، والشيفرة الآتية توضِّح ذلك:

var o = new Object();
o.toString(); // [object Object]

ملاحظة: بدءًا من معيار ECMAScript 5.1، أصبح استدعاء الدالة toString()‎ على قيم null يُعيد [object Null]، وستُعيد عند استدعائها على قيم undefined القيمة [object Undefined].

أمثلة

إعادة تعريف الدالة toString الافتراضية

يمكننا إنشاء دالة لتستدعى بدلًا من دالة toString()‎ الافتراضية، فالدالة toString()‎ لا تأخذ أيّة وسائط ويجب أن تُعيد قيمةً، ويمكن أن تعيد دالة toString()‎ التي ستُنشِئها أيّة قيمة تشاء، لكن الفائدة القصوى تتحقق إن أعادت معلومات حول الكائن.

سنُعرِّف نوع الكائنات Dog في المثال الآتي، وسنُنشِئ نسخةً منه باسم theDog:

function Dog(name, breed, color, sex) {
  this.name = name;
  this.breed = breed;
  this.color = color;
  this.sex = sex;
}

theDog = new Dog('Gabby', 'Lab', 'chocolate', 'female');

إذا استدعينا الدالة toString()‎ على هذا الكائن المُخصَّص، فستُعاد القيمة الموروثة من الكائن Object:

theDog.toString(); // [object Object]

الشيفرة الآتية تُنشِئ دالةً جديدةً باسم dogToString()‎ وسنُسندها إلى خاصية toString لكي نعيد كتابة دالة toString()‎ الافتراضية؛ تولِّد هذه الدالة سلسلةً نصيةً تحتوي على اسم وفصيلة ولون وجنس الكائن:

Dog.prototype.toString = function dogToString() {
  var ret = 'Dog ' + this.name + ' is a ' + this.sex + ' ' + this.color + ' ' + this.breed;
  return ret;
}

بعد تنفيذ الشيفرة السابقة، ستستدعي JavaScript الدالة dogToString()‎ في كل مرّة يُستخدَم فيها الكائن theDog كسلسلة نصية، وستُعاد القيمة الآتية:

"Dog Gabby is a female chocolate Lab"

استخدام الدالة toString لمعرفة صنف الكائن

يمكن أن تُستخدَم الدالة toString()‎ مع جميع الكائنات وتسمح لنا بمعرفة صنفها، ولاستخدام الدالة Object.prototype.toString()‎ مع جميع الكائنات فعلينا استخدام الدالة Function.prototype.call()‎ أو الدالة Function.prototype.apply()‎، ونُمرِّر الكائن الذي نريد معرفة صنفه كأوّل وسيط إليها:

var toString = Object.prototype.toString;

toString.call(new Date);    // [object Date]
toString.call(new String);  // [object String]
toString.call(Math);        // [object Math]

// ECMAScript 5.1
toString.call(undefined);   // [object Undefined]
toString.call(null);        // [object Null]

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

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي نعم نعم نعم نعم نعم

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