تفسير القيمة الخاصه بـ "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.