JavaScript riêng tư

Đề xuất phương pháp riêng tư, như một phần của đề xuất trường lớp đã được nâng cấp lên Giai đoạn 4 trong quy trình TC39 và sẽ chính thức được đưa vào ECMAScript 2022

Trong blog này, chúng tôi sẽ đề cập đến các tính năng của lớp riêng tư sẽ là một phần của ECMAScript 2022

Trước

Theo mặc định, tất cả các thuộc tính trong các lớp ES6 là công khai và có thể được kiểm tra hoặc sửa đổi bên ngoài lớp. Trong ví dụ dưới đây, chúng tôi thấy rằng không có gì trong lớp để ngăn thuộc tính bị thay đổi mà không gọi setter

class TimeTracker {
  name = 'Alice';
  project = 'blog';
  hours = 0;

  set addHours(hour) {
    this.hours += hour;
  }

  get timeSheet() {
    return `${this.name} works ${this.hours || 'nothing'} hours on ${this.project}`;
  }
}

let person = new TimeTracker();
person.addHours = 2; // standard setter
person.hours = 4;    // bypass the hours setter altogether
person.timeSheet;     // Alice works 4 hours on blog.

Sau đó

Bắt đầu từ ECMAScript 2022, các trường lớp riêng tư được xác định bằng cách sử dụng tiền tố hàm băm

let variable_name = value
1, Từ ví dụ trên, chúng ta có thể sửa đổi nó để bao gồm một trường lớp riêng tư để ngăn thuộc tính bị thay đổi bên ngoài phương thức của lớp

Trong bài viết này, chúng tôi sẽ cố gắng hiểu cách chúng tôi có thể tạo các biến riêng tư trong JavaScript. Trước tiên chúng ta hãy hiểu những cách mà chúng ta có thể khai báo các biến nói chung trong JavaScript là gì

cú pháp. Bằng cách sử dụng các cú pháp sau, chúng ta có thể khai báo các biến của mình trong JavaScript

var variable_name = value

Ngoài ra, một cú pháp khác mà chúng ta có thể sử dụng để khai báo biến là sử dụng từ khóa “let”

let variable_name = value

Bây giờ chúng ta đã có một ý tưởng cơ bản về cách chúng ta có thể khai báo các biến, hãy xem cách đặt chúng ở chế độ riêng tư, điều này làm cho các biến này không thể truy cập trực tiếp được

Tạo biến riêng trong hàm. Bất cứ khi nào chúng ta xử lý các hàm, chúng ta luôn cố gắng đặt các biến ở chế độ riêng tư, điều này giúp không truy cập trực tiếp vào các biến, đồng thời cũng tránh cập nhật các giá trị này

Ví dụ. Việc triển khai mã cuối cùng sẽ giúp chúng tôi hiểu cách xây dựng các biến và hàm riêng tư

Javascript




let variable_name = value
2

let variable_name = value
3
let variable_name = value
4
let variable_name = value
5

let variable_name = value
6
let variable_name = value
0

let variable_name = value
6
let variable_name = value
2

let variable_name = value
6
let variable_name = value
4

let variable_name = value
5
let variable_name = value
6

let variable_name = value
5
let variable_name = value
8

let variable_name = value
6
var variable_name = value
00

let variable_name = value
6
var variable_name = value
02

________ 46 ________ 104 ________ 105

let variable_name = value
3
var variable_name = value
07

var variable_name = value
08

let variable_name = value
3
var variable_name = value
00

let variable_name = value
3
var variable_name = value
02

let variable_name = value
3
var variable_name = value
04

let variable_name = value
3
var variable_name = value
06

var variable_name = value
08

let variable_name = value
3
var variable_name = value
09

let variable_name = value
3
let variable_name = value
21

let variable_name = value
22

đầu ra

var variable_name = value
0

Không thể truy cập trực tiếp tất cả các biến đã khai báo (hiển thị trong đoạn mã trên) vì chúng được đóng gói theo cách mà không có lệnh gọi hàm truy cập, các giá trị do các biến này mang theo không thể được sử dụng hoặc in ra

Ngoài ra, chúng ta cũng có thể sử dụng từ khóa “this” để thực hiện các lệnh gọi phương thức (hàm) để bám vào chính phương thức chính, do đó làm cho các biến ở chế độ riêng tư. Ý tưởng chính của việc sử dụng từ khóa “this” chỉ là làm cho mọi thứ có thể nhìn thấy trực tiếp, tức là làm cho các phương thức có thể truy cập trực tiếp. Sau đây là đoạn mã được hiển thị để hiểu rõ hơn

Javascript




let variable_name = value
2

let variable_name = value
3
let variable_name = value
4
let variable_name = value
5

let variable_name = value
6
let variable_name = value
0

let variable_name = value
6
let variable_name = value
2

_______46____422____423

let variable_name = value
5
let variable_name = value
6

let variable_name = value
5
let variable_name = value
8

let variable_name = value
6
var variable_name = value
00

_______46____422____432

let variable_name = value
3
var variable_name = value
07

var variable_name = value
08

_______43____437____438

let variable_name = value
39

let variable_name = value
3
var variable_name = value
02

let variable_name = value
3
var variable_name = value
04

let variable_name = value
3
var variable_name = value
06

var variable_name = value
08

let variable_name = value
3
var variable_name = value
09

_______43____450

let variable_name = value
22

đầu ra

var variable_name = value
0

Tạo biến riêng trong các lớp. Trong ES6, chúng tôi có một cơ sở ở dạng các lớp cũng được sử dụng để hiển thị một số đầu ra nhất định trên bảng điều khiển của người dùng. Trong khi khai báo một lớp, chúng ta cũng sử dụng hàm xây dựng, không có gì khác ngoài hàm mặc định chấp nhận các tham số nhất định trong khi gọi các biến hoặc phương thức nhất định sau khi tạo đối tượng

Để chứng minh tính riêng tư của biến, chúng tôi sẽ đặt tất cả mọi thứ bên trong hàm tạo, sau đó, chúng tôi sẽ truy cập chúng thông qua các phương thức nhất định (nó cũng có thể được gọi là đóng gói trong đó chúng tôi truy cập các biến thông qua các phương thức)

Riêng tư trong JavaScript là gì?

Trường riêng tư bao gồm trường đối tượng riêng tư và trường tĩnh riêng tư . Các trường riêng tư có thể truy cập được trên hàm tạo của lớp từ bên trong chính phần khai báo lớp. Chúng được sử dụng để khai báo tên trường cũng như để truy cập giá trị của trường.

JavaScript có riêng tư không?

Ở trạng thái hiện tại, không có cách “trực tiếp” nào để tạo biến riêng tư trong JavaScript .

Làm cách nào để truy cập JavaScript chức năng riêng tư?

Phương thức riêng của một lớp chỉ có thể được truy cập bên trong lớp. Các phương thức riêng tư không thể được gọi bằng cách sử dụng đối tượng bên ngoài lớp. Nếu chúng ta cố gắng truy cập phương thức private bên ngoài lớp, chúng ta sẽ nhận được SyntaxError. Phương thức private của chúng ta có thể được khai báo bằng cách thêm dấu # trước tên phương thức

Làm cách nào để viết phương thức riêng tư trong JavaScript?

Để đặt một phương thức công khai ở chế độ riêng tư, bạn đặt tiền tố tên của phương thức đó bằng một hàm băm # . JavaScript cho phép bạn xác định các phương thức riêng tư cho các phương thức cá thể, phương thức tĩnh và getter/setters. Phần sau đây trình bày cú pháp xác định một phương thức thể hiện riêng. lớp MyClass { #privateMethod() { //. } }