Cách sử dụng từ khóa this trong JavaScript
Javascript căn bản | by
Trong JavaScript, từ khóa this là một trong những khái niệm quan trọng nhưng cũng gây nhiều nhầm lẫn cho người mới học. this không cố định mà thay đổi tùy thuộc vào ngữ cảnh thực thi của nó. Khi làm việc với các hàm, đối tượng, class, hay thậm chí trong các sự kiện DOM, this có thể tham chiếu đến những đối tượng khác nhau. Hiểu rõ cách hoạt động của this giúp lập trình viên viết mã hiệu quả hơn, tránh được các lỗi phổ biến và tận dụng tối đa sức mạnh của JavaScript. Trong bài viết này, mình sẽ cùng tìm hiểu chi tiết về cách sử dụng this trong từng ngữ cảnh khác nhau, đồng thời chỉ ra những lỗi thường gặp và cách khắc phục.
Giới thiệu về từ khóa this trong JavaScript
.png)
Trong JavaScript, this là một từ khóa đặc biệt dùng để tham chiếu đến một đối tượng nhất định trong ngữ cảnh thực thi của nó. Giá trị của this không cố định mà thay đổi tùy thuộc vào cách và nơi mà nó được sử dụng.
Tóm lại, this là một biến đặc biệt được tự động gán giá trị khi một hàm hoặc phương thức được gọi, và giá trị của nó sẽ thay đổi tùy theo ngữ cảnh thực thi.
Ví dụ cơ bản:
console.log(this); // Trong môi trường trình duyệt, this trỏ đến window
this tham chiếu đến đối tượng nào phụ thuộc vào ngữ cảnh thực thi
JavaScript xác định giá trị của this dựa trên cách một hàm được gọi. Dưới đây là một số ngữ cảnh phổ biến mà this có thể tham chiếu đến những đối tượng khác nhau:
Trong phạm vi toàn cục (Global Context)
- Trong môi trường trình duyệt,
thistrỏ đến đối tượngwindow. - Trong chế độ
strict mode,thissẽ làundefined.
Ví dụ:
console.log(this); // Trong trình duyệt, in ra Window object
"use strict";
function test() {
console.log(this); // undefined trong strict mode
}
test();
Trong một phương thức của đối tượng (Object Method Context)
- Khi
thisđược gọi bên trong một phương thức của một đối tượng, nó tham chiếu đến chính đối tượng đó.
Ví dụ:
const person = {
name: "John",
greet: function() {
console.log(this.name); // this tham chiếu đến object person
}
};
person.greet(); // Output: "John"
Trong một hàm thông thường (Function Context)
- Khi một hàm được gọi một cách bình thường (không phải là phương thức của một đối tượng),
thismặc định tham chiếu đếnwindow(hoặcundefinedtrong strict mode).
Ví dụ:
function showThis() {
console.log(this); // Trong trình duyệt: window, trong strict mode: undefined
}
showThis();
Trong một hàm khởi tạo (Constructor Function Context)
- Khi sử dụng
newđể tạo một đối tượng từ một hàm constructor,thistrỏ đến đối tượng mới được tạo.
Ví dụ:
.jpg)