هل يمكنني تغيير سياق جافا سكريبت "هذا"؟
-
20-08-2019 - |
سؤال
var UI$Contract$ddlForm_change = function() {
//'this' is currently the drop down that fires the event
// My question is can I change the context so "this" represents another object?
this = SomeObject;
// then call methods on the new "this"
this.someMethod(someParam);
};
هل هذا ممكن؟
المحلول
لا هذا ليس مستحيل.
يمكنك استدعاء طريقة ذات قيمة محددة لـ هذا (استخدام method.apply()
/method.call()
) ولكن لا يمكنك إعادة تعيين الكلمة الأساسية، this
.
نصائح أخرى
ولا يمكنك تغيير ما يشير إلى this
من داخل م> وظيفة.
ولكن، يمكنك <م> دعوة م> وظيفة في سياق محدد - لذلك يشير أن this
لكائن معين - باستخدام call
أو apply
وJ-P هو الصحيح. هذا غير ممكن. الرجوع إلى وثيقة مواصفات لغة جافا سكريبت ECMA-262. يمكنك تنزيل مستوى من هنا:
http://www.ecma-international.org/publications/ معايير / الجمعية المصرية-262.htm
والملف هو ECMA-262.pdf وفي الصفحة 39، القسم 10.1.7.
<اقتباس فقرة>و10.1.7 هذا
وهناك هذه القيمة المرتبطة كل سياق التنفيذ النشط. ال تعتمد هذه القيمة على المتصل و نوع من التعليمات البرمجية يتم تنفيذه وهو تحديد عندما تدخل سيطرة سياق التنفيذ. وهذه القيمة المرتبطة سياق التنفيذ هو غير قابل للتغيير.
اقتباس فقرة>ملحوظة "هو غير قابل للتغيير". أي لا يمكن تغييرها.