Đang mở...

Con Trỏ “This” Trong Javascript

Từ khóa “this” trong Javascript đề cập đến đối tượng mà nó thuộc về. Lưu ý Ví dụ trong Object Ví dụ trong 1 đối tượng Ví dụ trong handler...
Danh mục Blog
13/03/2023
Con Trỏ “This” Trong Javascript

Từ khóa “this” trong Javascript đề cập đến đối tượng mà nó thuộc về.

  • Trong một phương thức, “this” tham chiếu tới đối tượng truy cập phương thức.
  • Đứng ngoài phương thức, “this” tham chiếu đến đối tượng global.

Lưu ý

  • “this” trong hàm tạo là đại diện cho đối tượng sẽ được tạo.
  • “this” trong hàm là undefined khi ở strict mode.
  • Các phương thức bind() call() apply() có thể tham chiếu this tới đối tượng khác.

Ví dụ trong Object

const myPhone = {
	name: 'IP XS Max',
	color: 'black',

	// Phương thức - Method
	takePhote(){
		console.log(this); /// this sẽ là myPhone có 2 thuộc tính name và color
	},
	objChild: {
		name: 'Child Object',
		methodChild(){
			console.log(this); // this sẽ là objChild có 1 thuộc tính name = 'Child Object'
		}
	}
}

Ví dụ trong 1 đối tượng

function Car(name, color , weight){
	this name = name;
	this.color = color;
	this.weight = weight;
	this.run = function(){
		console.log('Running...', this); //this vẫn sẽ là đối tượng car với giá trị khởi tạo là ('Mercedes', 'black', 400)
	}
}

const mercedes = new Car('Mercedes', 'black', 400);
console.log(mercedes.run())

Ví dụ trong handler Dom

const btn = document.querySelector('button')

button.onClick = function(){
	console.log(this); // vậy đối tượng this ở đây là 1 element chính xác là button có một phương thức là click
	// kết quả sẽ là <button>Click Me</button>
	console.dir(this); // dùng dir để trả về 1 obj button
}

Ví dụ trong Function

function myFuntion(){
	console.log(this)
}

myFuntion(); // hàm này không thuộc vào 1 Object nào cả => this sẽ là object windown. đối tượng lớn nhất trong trình duyệt web

Trong Strict Mode

'use strict'
function myFuntion(){
	console.log(this)
}

myFuntion(); // trong strict mode từ khóa this của 1 hàm bình thường (không thuộc vào 1 Obj nào cả) thì sẽ là undefined

Nếu vẫn muốn trả về đối tượng window ?

'use strict'
function myFuntion(){
	console.log(this)
}

window.myFuntion(); // this sẽ là đối tượng window

Ví dụ trong Prototype

function Car(name, color , weight){
	this name = name;
	this.color = color;
}

Car.prototype.run = function () {
	// this ở đây nó sẽ là đối tượng porsche hoặc mercedes khai báo ở dưới
	function test(){
		console.log(this); // this ở đây thuộc vào 1 hàm không phải là phương thức. thì this ở đây sẽ là đối tượng window
	}

	test()
}

const porsche = new Car('Porsche', 'blink');
const mercedes = new Car('Mercedes', 'black');

Ví dụ trong arrow function

Arrow funtion không có this. Nó sẽ lấy this ở phạm vi bên ngoài gần nhất chứa nó.

function Car(name, color , weight){
	this name = name;
	this.color = color;
}

Car.prototype.run = function () {
	// this ở đây nó sẽ là đối tượng porsche hoặc mercedes khai báo ở dưới
	const test = () => {
		console.log(this); // // this ở đây nó sẽ là đối tượng porsche hoặc mercedes khai báo ở dưới
	}

	test()
}

const porsche = new Car('Porsche', 'blink');
const mercedes = new Car('Mercedes', 'black');

Vitamindev

Chia sẻ bài viết này

Leave a Reply Câu trả lời

Địa chỉ email của bạn sẽ không được công bố.

Các nội dung liên quan

Xem các nội dung liên quan

26/06/2023
Sử dụng Bucket4j để thực hiện rate limiting trong Java
1. Giới thiệu Blog này, Chúng ta sẽ tìm hiểu về rate limiting và lợi ích của việc sử dụng Bucket4j cho rate limiting trong ứng dụng Java. Rate Limiting...
13/06/2023
Tìm hiểu về Gitlab CI/CD
I. Tổng quan GitLab CI là một phần của GitLab, là một hệ thống quản lý mã nguồn Git dựa trên web và một công cụ liên kết liền mạch để...
06/06/2023
Tìm hiểu về Lists và Keys trong React
Đã bao giờ bạn đặt câu hỏi rằng tại sao lại cần key khi map 1 mảng? Tôi chắc chắn bạn đã gặp cảnh báo này: Chỉ cần thêm thuộc...
19/05/2023
Hướng dẫn dùng Jquery Ajax submit form và gọi REST API
AJAX đại diện cho Asynchronous JavaScript And XML bằng cách sử dụng đối tượng XMLHttpRequest để tương tác với máy chủ (server).