Bạn có thể đặt một chức năng trong một đối tượng javascript không?
Ở đây chúng ta vừa sử dụng một Biểu thức Hàm để tạo một hàm và gán nó cho thuộc tính 2 của đối tượng Show Sau đó, chúng ta có thể gọi nó là 3. Người dùng bây giờ có thể nóiMột chức năng là một thuộc tính của một đối tượng được gọi là phương thức của nó Vì vậy, ở đây chúng ta có một phương thức 4 của đối tượng 1Tất nhiên, chúng ta có thể sử dụng một hàm được khai báo trước như một phương thức, như thế này
Lập trình hướng đối tượng Khi chúng ta viết mã bằng cách sử dụng các đối tượng để biểu diễn các thực thể, điều đó được gọi ngắn gọn là lập trình hướng đối tượng. “Ồ” OOP là một điều lớn lao, một ngành khoa học thú vị của riêng nó. Làm thế nào để chọn đúng thực thể? . Các yếu tố của phần mềm hướng đối tượng có thể tái sử dụng” của E. Gamma, R. Mũ bảo hiểm, R. Johnson, J. Vissides hoặc “Phân tích và thiết kế hướng đối tượng với các ứng dụng” của G. Boochvà hơn thế nữa phương pháp tốc kýTồn tại một cú pháp ngắn hơn cho các phương thức trong một đối tượng bằng chữ
Như đã minh họa, chúng ta có thể bỏ qua 6 và chỉ cần viết 7Nói thật, các ký hiệu không hoàn toàn giống nhau. Có những khác biệt tinh tế liên quan đến kế thừa đối tượng (sẽ được đề cập sau), nhưng hiện tại chúng không quan trọng. Trong hầu hết các trường hợp, cú pháp ngắn hơn được ưu tiên “cái này” trong các phương thứcThông thường, một phương thức đối tượng cần truy cập thông tin được lưu trữ trong đối tượng để thực hiện công việc của nó Chẳng hạn, mã bên trong 3 có thể cần tên của 1Để truy cập đối tượng, một phương thức có thể sử dụng từ khóa 0Giá trị của 0 là đối tượng “trước dấu chấm”, đối tượng được sử dụng để gọi phương thứcVí dụ 2Ở đây trong quá trình thực thi của 3, giá trị của 0 sẽ là 1Về mặt kỹ thuật, cũng có thể truy cập đối tượng mà không cần 0, bằng cách tham chiếu nó thông qua biến bên ngoài 7…Nhưng mã như vậy là không đáng tin cậy. Nếu chúng tôi quyết định sao chép 1 sang một biến khác, e. g. 7 và ghi đè lên 1 bằng thứ khác, sau đó nó sẽ truy cập sai đối tượngĐiều đó được chứng minh dưới đây 1Nếu chúng tôi sử dụng 9 thay vì 0 bên trong 1, thì mã sẽ hoạt động"cái này" không bị ràng buộcTrong JavaScript, từ khóa 0 hoạt động không giống như hầu hết các ngôn ngữ lập trình khác. Nó có thể được sử dụng trong bất kỳ chức năng nào, ngay cả khi nó không phải là phương thức của đối tượngKhông có lỗi cú pháp trong ví dụ sau 6Giá trị của 0 được đánh giá trong thời gian chạy, tùy thuộc vào ngữ cảnhChẳng hạn, ở đây, cùng một chức năng được gán cho hai đối tượng khác nhau và có “cái này” khác nhau trong các lời gọi 8Quy tắc rất đơn giản. nếu 4 được gọi, thì 0 là 6 trong cuộc gọi của 7. Vì vậy, nó là 1 hoặc 9 trong ví dụ trênGọi không có đối tượng. Chúng ta thậm chí có thể gọi hàm mà không cần đối tượng nào cả 6Trong trường hợp này, 0 là 22 ở chế độ nghiêm ngặt. Nếu chúng tôi cố gắng truy cập vào 9, sẽ có lỗiỞ chế độ không nghiêm ngặt, giá trị của 0 trong trường hợp đó sẽ là đối tượng toàn cầu ( 25 trong trình duyệt, chúng ta sẽ nói về nó sau trong chương Đối tượng toàn cầu). Đây là một hành vi lịch sử mà 26 sửa chữaThông thường cuộc gọi như vậy là một lỗi lập trình. Nếu có 0 bên trong một hàm, nó sẽ được gọi trong ngữ cảnh đối tượngHậu quả của việc không gắn kết Nếu bạn đến từ một ngôn ngữ lập trình khác, thì có lẽ bạn đã quen với ý tưởng về "_______40 bị ràng buộc", trong đó các phương thức được định nghĩa trong một đối tượng luôn có _____40 tham chiếu tới đối tượng đó Trong JavaScript, 0 là "miễn phí", giá trị của nó được đánh giá tại thời điểm gọi và không phụ thuộc vào nơi phương thức được khai báo, mà phụ thuộc vào đối tượng nào "trước dấu chấm"Khái niệm về thời gian chạy được đánh giá 0 có cả ưu điểm và nhược điểm. Một mặt, một chức năng có thể được sử dụng lại cho các đối tượng khác nhau. Mặt khác, tính linh hoạt cao hơn tạo ra nhiều khả năng mắc sai lầm hơn.Ở đây, vị trí của chúng tôi không phải là đánh giá liệu quyết định thiết kế ngôn ngữ này là tốt hay xấu. Chúng tôi sẽ hiểu cách làm việc với nó, cách nhận được lợi ích và tránh các vấn đề Các chức năng mũi tên không có "cái này"Chức năng mũi tên là đặc biệt. họ không có 0 “của riêng mình”. Nếu chúng ta tham chiếu 0 từ một hàm như vậy, thì nó được lấy từ hàm “bình thường” bên ngoàiChẳng hạn, ở đây 75 sử dụng 0 từ phương thức 3 bên ngoài 0Đó là một tính năng đặc biệt của arrow functions, nó rất hữu ích khi chúng ta thực sự không muốn có một 0 riêng mà muốn lấy nó từ ngữ cảnh bên ngoài. Ở phần sau của chương Các hàm mũi tên được xem xét lại, chúng ta sẽ tìm hiểu sâu hơn về các hàm mũi tênBản tóm tắt
Giá trị của 0 được xác định trong thời gian chạy
Xin lưu ý rằng các chức năng mũi tên là đặc biệt. họ không có 0. Khi 0 được truy cập bên trong hàm mũi tên, nó được lấy từ bên ngoài
Bạn có thể thêm chức năng vào đối tượng không?Chúng ta có thể thêm hàm vào đối tượng , dưới dạng thuộc tính và khi hoàn thành, chúng được gọi là phương thức.
Bạn có thể đặt một hàm trong một lớp JavaScript không?Các lớp là các hàm
. Các lớp được khai báo với từ khóa class. Chúng ta sẽ sử dụng cú pháp biểu thức hàm để khởi tạo một hàm và cú pháp biểu thức lớp để khởi tạo một lớp. Chúng ta có thể truy cập [[Prototype]] của một đối tượng bằng Object. A JavaScript class is a type of function. Classes are declared with the class keyword. We will use function expression syntax to initialize a function and class expression syntax to initialize a class. We can access the [[Prototype]] of an object using the Object.
Là một chức năng chứa trong một đối tượng?Hàm thành viên của một lớp là một hàm có định nghĩa hoặc nguyên mẫu của nó trong định nghĩa lớp giống như bất kỳ biến nào khác . Nó hoạt động trên bất kỳ đối tượng nào của lớp mà nó là thành viên và có quyền truy cập vào tất cả các thành viên của lớp cho đối tượng đó. |