Object.prototype.toString()‎

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

الدالة 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
الدعم الأساسي نعم نعم نعم نعم نعم

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