Object.prototype.__defineSetter__()
الدالة Object.prototype.__defineSetter__()
تربط دالةً بإحدى خاصيات الكائن، وستستدعى تلك الدالة عند محاولة ضبط قيمة تلك الخاصية.
تحذير: هذه الدالة مهملة ويُفتَرَض تعريف دوال setter عند تهيئة الكائنات أو باستخدام الدالة Object.defineProperty()
، وعلى الرغم من أنَّ هذه الدالة موجودة في أغلبية المتصفحات، لكنها لم تُعرَّف إلا في آخر مسودة من معيار ECMAScript لأغراض التوافقية، ولا يجب أن تُستخدَم لوجود بدائل أفضل منها.
البنية العامة
obj.__defineSetter__(prop, fun)
prop
سلسلة نصية تحتوي على اسم الخاصية التي نريد ربط الدالة المعطية إليها.
fun
الدالة التي نريد استدعاءها عند محاولة ضبط قيمة الخاصية المعنية. وتأخذ هذه الدالة الشكل الآتي:
function(val) { . . . }
إذ إنَّ الوسيط val
سيحمل القيمة التي حاولنا إسنادها إلى الخاصية prop
.
القيمة المعادة
القيمة undefined
.
الوصف
تسمح الدالة __defineSetter__
بتعريف دالة setter على كائنٍ موجودٍ مسبقًا.
أمثلة
مثال عن استخدام الدالة __defineSetter__
، نُذكِّر أنَّه لا يجدر بنا استخدام هذه الطريقة:
var o = {};
o.__defineSetter__('value', function(val) { this.anotherValue = val; });
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
يمكننا تنفيذ ما سبق بطريقةٍ معيارية عبر تعريف دالة setter باستخدام الشكل المختصر لتهيئة الكائنات:
var o = { set value(val) { this.anotherValue = val; } };
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
أو باستخدام الدالة Object.defineProperty()
:
var o = {};
Object.defineProperty(o, 'value', {
set: function(val) {
this.anotherValue = val;
}
});
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
دعم المتصفحات
الميزة | Chrome | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
الدعم الأساسي | نعم | نعم | 11 | نعم | نعم |
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft. جعلتها هذه المسودة معياريةً.