Object.prototype.valueOf()
الدالة Object.prototype.valueOf()
تُعيد قيمةً أوليّةً للكائن المعطي.
البنية العامة
object.valueOf()
القيمة المعادة
قيمة أوليّة للكائن المعطي.
الوصف
تستدعي JavaScript الدالة valueOf
لتحويل كائن ما إلى قيمة أوليّة، ومن النادر أن تحتاج إلى استدعاء الدالة valueOf
يدويًا، إذ تستدعيها JavaScript تلقائيًا عندما تصادف كائنًا في مكانٍ تتوقع فيه قيمةً أوليةً.
جميع الكائنات التي تنحدر من الكائن Object
ترث الدالة valueOf
، وتُعيد جميع الكائنات المُضمَّنة في اللغة تعريف هذه الدالة لتعيد القيمة المناسبة؛ وإذا لم يكن من الممكن تمثيل الكائن بقيمة أوليّة، فستُعيد الدالة valueOf
الكائن نفسه.
يمكنك استخدام الدالة valueOf
في الشيفرات التي تكتبها لتحويل كائن مضمَّن في اللغة إلى قيمةٍ أوليّة، وعندما تُنشِئ كائنًا خاصًا بك فيمكنك إعادة تعريف الدالة Object.prototype.valueOf()
لاستدعاء دالة خاصة بدلًا من الدالة الافتراضية.
إعادة تعريف الدالة valueOf
في الكائنات المخصصة
يمكنك إنشاء دالة لتستدعى بدلًا من الدالة valueOf
الافتراضية، ويجب ألّا تأخذ هذه الدالة أيّة وسائط.
لنفترض أنَّ لدينا نوع الكائنات MyNumberType
وأردنا إنشاء دالة valueOf
خاصة به؛ فالشيفرة الآتية تُعيد إسناد دالة مُعرَّفة من قبل المستخدم إلى خاصية valueOf
التابعة للكائن:
MyNumberType.prototype.valueOf = function() { return customPrimitiveValue; };
بعد تنفيذ الشيفرة السابقة، ستستدعي JavaScript الدالة السابقة في كل مرة نستخدم فيها الكائن MyNumberType
في مكانٍ يتطلب قيمةً أوليةً.
صحيحٌ أنَّ الدالة valueOf
تستدعى تلقائيًا من JavaScript عادةً، لكن يمكننا استدعاؤها يدويًا كما يلي:
myNumberType.valueOf()
ملاحظة: تحوّل الكائنات التي تُستخدَم في سياقٍ يتطلب سلسلةً نصيةً باستخدام الدالة toString()
وهي تختلف عن تحويل كائنات String
إلى سلاسل نصية أوليّة باستخدام الدالة valueOf
.
أمثلة
يبيّن المثال الآتي كيفية إعادة تعريف الدالة valueOf
في كائن مخصص، ثم كيف تستدعي JavaScript الدالة valueOf
في حال استخدمنا الكائن في سياقٍ تتوقع اللغةُ فيه قيمةً أوليةً:
function MyNumberType(n) {
this.number = n;
}
MyNumberType.prototype.valueOf = function() {
return this.number;
};
var myObj = new MyNumberType(4);
myObj + 3; // 7
دعم المتصفحات
الميزة | Chrome | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
الدعم الأساسي | نعم | نعم | نعم | نعم | نعم |
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2015 (6th Edition).
- معيار ECMAScript 5.1.
- معيار ECMAScript 1st Edition.