Toán Tử New - Prototype - Ninja IT
Có thể bạn quan tâm
Class trong Javascript
Trong Javascript trước ES2015 không có từ khóa class tuy nhiên Javascript hổ trợ từ khóa new với function tương đương việc viết constructor của class và tạo object từ class trong các ngôn ngữ khác như Java/C#.
| 1 2 3 4 5 6 7 8 | // tương đương khai báo constructor class Animal trong Java function Animal(name) { this.name = name; } var pet = new Animal("Teddy"); console.log(pet); // Animal { name: "Teddy" } |
Cơ bản thì this tương tự như this trong Java, new cũng tương đương với new, còn function thì tương đương với constructor trong Java. Tên class cũng chính là tên hàm Animal.
Toán tử new
Trong ví dụ trên, khi gọi toán tử new thì Javascript sẽ tạo ra một đối tượng. Đối tượng này sẽ thừa kế Animal.prototype và thực thi hàm khởi tạo (contructor), cũng chính là hàm Animal với từ khóa this trỏ đến đối tượng vừa tạo ra. Sau đó trả về đối tượng đó.
Ví dụ sau sẽ tương đương với ví dụ trước nhưng không dùng toán tử new.
| 1 2 3 4 5 6 7 8 9 | function Animal(name) { this.name = name; } var pet = {}; // tạo đối tượng mới pet.__proto__ = Animal.prototype; // thừa kế từ Animal.prototype Animal.bind(pet)("Teddy"); // gọi hàm constructor, bind this là pet console.log(pet); // Animal { name: "Teddy" } |
Thuộc tính prototype
Khi tạo một hàm, hàm đó có thêm một thuộc tính là prototype là một object thừa kế Object.prototype.
| 1 2 3 4 5 | function Animal(name) { this.name = name; } console.log(typeof Animal.prototype); // object console.log(Animal.prototype.__proto__ === Object.prototype); // true |
Object.prototype là một object không có cha (thừa kế từ null) và có các hàm tạo sẵn như toString, isPrototypeOf, hasOwnProperty. Mọi đối tượng đều thừa kế từ Object.prototype này.
| 1 2 3 | console.log(Object.prototype.__proto__); // null console.log(typeof Object.prototype.toString); // function console.log(typeof Object.prototype.hasOwnProperty); // function |
Ngoài ra Animal.prototype còn có một thuộc tính là contructor trỏ đến chính hàm Animal.
| 1 2 3 4 | function Animal(name) { this.name = name; } console.log(Animal.prototype.contructor === Animal); // true |
Kết luận như sau:
object pet <–thừa kế– Animal.prototype <–thừa kế– Object prototype object pet <–constructor– Animal()
Từ khóa » Toán Tử New Trong Java
-
Từ Khóa New Trong Java - NIIT - ICT Hà Nội
-
Hoi Ve Toan Tu New Trong Java
-
Các Toán Tử Trong Java - Techacademy
-
Lớp Và đối Tượng Trong Java - Học Java Miễn Phí Hay Nhất - VietTuts
-
Toán Tử New Trong JavaScript | Học Lập Trình JavaScript
-
Lớp Và Phương Thức Trong Java
-
Đối Tượng (object) Và Cách Sử Dụng đối Tượng Trong Java - Góc Học IT
-
Toán Tử Trong Java
-
Java: Lớp (Class) Và Đối Tượng (Object) | V1Study
-
Khởi Tạo đối Tượng Với Từ Khóa New Trong Javascript Có Tác Dụng Gì
-
Tìm Hiểu 3 Loại Biến/hàm Cơ Bản Trong Lập Trình Java | VNFS
-
Tìm Hiểu Về đối Tượng String Trong Java | TopDev
-
Constructor Trong Java Là Gì? | TopDev
-
Không Hiểu New Trong Java Sinhvien Sv = New Sinhvien(i,ht,dm1,dm2)
-
[PDF] Lập Trình Java Nâng Cao - Soict
-
Java Bài 20: Phương Thức Khởi Tạo - Constructor
-
Java | Tôi Thắc Mắc
-
Đối Tượng Trong Lập Trình Java - Le Vu Nguyen
-
[Selenium Java] Bài 2: Java OOP Hướng đối Tượng | Anh Tester