انظر تعريف الكائن التالي:
"استخدم struct'var jane = {name: 'jane' ، display: function () {retrun 'شخص اسمه' + this.name ؛ }} ؛سيتصل هذا بشكل طبيعي
Jane.Display () ؛
سوف تتسبب المكالمة التالية في حدوث خطأ:
var func = jane.display ؛ func ()
typeerror: لا يمكن قراءة الخاصية "اسم" غير محدد
لأن هذا المؤشر قد تغير ، فإن الطريقة الصحيحة هي كما يلي:
var func2 = jane.display.bind (jane) ؛ func2 ()
"بنسون اسمه جين"
جميع الوظائف لها هذه المتغيرات الخاصة ، مثل foreach أدناه
var jane = {name: 'Jane' ، Friends: ['tarzan' ، 'Cheeta'] ، sayhitofriends: function () {'use Strict' ؛ this.friends.foreach (وظيفة (صديق) {// 'this' غير محدد هنا console.log (this.name + 'يقول hi to' + friend) ؛}) ؛ }}استدعاء MealHitofriends سوف ينتج خطأ:
Jane.Sayhitofriends ()
typeerror: لا يمكن قراءة الخاصية "اسم" غير محدد
الحل 1: احفظ هذا في متغيرات مختلفة
var jane = {name: 'Jane' ، Friends: ['tarzan' ، 'Cheeta'] ، sayhitofriends: function () {'use Strict' ؛ var that = هذا ؛ this.friends.foreach (وظيفة (صديق) {console.log (that.name + 'يقول hi to' + friend) ؛}) ؛ }}الحل 2: استخدم المعلمة الثانية لـ Foreach ، والتي يمكنها تحديد قيمة لهذا
var jane = {name: 'Jane' ، Friends: ['tarzan' ، 'Cheeta'] ، sayhitofriends: function () {'use Strict' ؛ this.friends.foreach (funty (friend) {console.log (this.name + 'يقول hi to' + friend) ؛} ، هذا) ؛ }}