جافا سكريبت هذه الكلمة الرئيسية
مثال
const person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
ما هذا ؟
تشير الكلمة الأساسية JavaScript this
إلى الكائن الذي تنتمي إليه.
لها قيم مختلفة حسب مكان استخدامها:
- في طريقة ،
this
يشير إلى كائن المالك . - وحده ،
this
يشير إلى الكائن العالمي . - في دالة ،
this
يشير إلى الكائن العام . - في وظيفة ، في الوضع الصارم ،
this
هوundefined
. - في حدث ما ،
this
يشير إلى العنصر الذي تلقى الحدث. - طرق مثل
call()
،apply()
ويمكن أن تشيرthis
إلى أي كائن .
هذا في طريقة
في أسلوب الكائن ، this
يشير إلى " مالك " الطريقة.
في المثال الموجود أعلى هذه الصفحة ، this
يشير إلى كائن الشخص .
كائن الشخص هو مالك أسلوب fullName .
fullName : function() {
return this.firstName + " " + this.lastName;
}
هذا وحده
عند استخدامه بمفرده ، يكون المالك هو الكائن العام ، لذلك this
يشير إلى الكائن العالمي.
في نافذة المتصفح ، يكون الكائن Global هو [object Window]
:
مثال
let x = this;
في الوضع المتشدد ، عند استخدامه بمفرده ، this
يشير أيضًا إلى الكائن العام
[object Window]
:
مثال
"use strict";
let x = this;
هذا في وظيفة (افتراضي)
في وظيفة JavaScript ، يكون مالك الوظيفة هو الرابط الافتراضي لـ this
.
لذلك ، في دالة ، this
يشير إلى الكائن العالمي [object Window]
.
مثال
function myFunction() {
return this;
}
هذا في وظيفة (صارم)
لا يسمح الوضع المتشدد لـ JavaScript بالربط الافتراضي.
لذلك ، عند استخدامها في دالة ، في الوضع المتشدد ، this
تكون undefined
.
مثال
"use strict";
function myFunction() {
return this;
}
هذا في معالجات الأحداث
في معالجات أحداث HTML ، this
يشير إلى عنصر HTML الذي تلقى الحدث:
مثال
<button onclick="this.style.display='none'">
Click to
Remove Me!
</button>
أسلوب الكائن ملزم
في هذه الأمثلة ، this
هل كائن الشخص (كائن الشخص هو "مالك" الوظيفة):
مثال
const person = {
firstName : "John",
lastName : "Doe",
id : 5566,
myFunction : function() {
return this;
}
};
مثال
const person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " +
this.lastName;
}
};
بمعنى آخر: this.firstName تعني خاصية الاسم الأول لهذا الكائن (الشخص).
صريح وظيفة ربط
والطرق هي call()
طرق apply()
جافا سكريبت محددة مسبقًا.
يمكن استخدام كلاهما لاستدعاء طريقة كائن مع كائن آخر كوسيطة.
يمكنك قراءة المزيد عنها call()
لاحقًا apply()
في هذا البرنامج التعليمي.
في المثال أدناه ، عند استدعاء person1.fullName مع person2 كوسيطة ، this
سيشير إلى person2 ، حتى لو كان أسلوب person1:
مثال
const person1 = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person2 = {
firstName:"John",
lastName: "Doe",
}
person1.fullName.call(person2); // Will return "John Doe"