تفسير القيمة الخاصه بـ "this"
الأهمية: 3
في الشيفرة بالأسفل نريد تنفيذ obj.go()
4 مرات.
لكن تنفيذ (1)
و (2)
يكون مختلف عن تنفيذ (3)
4 (4)
. لماذا?
let obj, method;
obj = {
go: function() { alert(this); }
};
obj.go(); // (1) [object Object]
(obj.go)(); // (2) [object Object]
(method = obj.go)(); // (3) undefined
(obj.go || obj.stop)(); // (4) undefined
هنا يكون التفسير.
-
هذا هو استدعاء طريقة الكائن المعتاد.
-
نفس الشيء ، الأقواس لا تغير ترتيب العمليات هنا ، النقطة أولاً على أي حال.
-
Here we have a more complex call
(expression)()
. The call works as if it were split into two lines:f = obj.go; // حساب المصطلح f(); // تنفيذ ما لدينا
هنا
f()
يتم تنفيذها كـ تابع, بدونthis
. -
The similar thing as
(3)
, to the left of the parentheses()
we have an expression.
لتفسير سلوك (3)
و (4)
نريد إعادة تنفيذ مدخلات الخاصية (نقطة او اقواس مربعة) تعيد قيمة النوع المرجعي.
اى عملية عليها عدا تنفيذ التابع (مثل =
or ||
) يحولها إلى قيمة عادية ، لا تحمل المعلومات التي تسمح بتعيينها this
.