Hướng dẫn this in class javascript - cái này trong javascript lớp

Hôm nay mình sẽ giới thiệu với bạn về class trong JavaScript. Class được tạo ra như thế nào? Sử dụng class ra sao. Hãy theo dõi nhé!class trong JavaScript. Class được tạo ra như thế nào? Sử dụng class ra sao. Hãy theo dõi nhé!

Nội dung chính ShowShow

  • 1. Class là gì?
  • 2. Constructor là gì?
  • 3. Phương thức getter và setter trong JavaScript
  • 3.1. Phương thức getter
  • 3.2. Phương thức setter
  • 4. Phương thức tĩnh (Static method)
  • 5. Hoisting đối với class
  • 6. Kế thừa class
  • 7. Từ khóa this trong class
  • 8. Kiểm tra loại đối tượng với instanceof
  • 9. Class và prototypes
  • Tổng kết

Hướng dẫn this in class javascript - cái này trong javascript lớp


1. Class là gì?

2. Constructor là gì? có thể hiểu là một khuôn mẫu.

3. Phương thức getter và setter trong JavaScriptclass (hay lớp) được sử dụng để tạo ra các đối tượng (mà mình đã giới thiệu ở bài đối tượng trong JavaScript).

3.1. Phương thức getter

3.2. Phương thức setter

4. Phương thức tĩnh (Static method)ECMAScript 6 thì JavaSript hỗ trợ tạo ra class giống các ngôn ngữ lập trình hướng đối tượng khác (Java, PHP, Python...).

5. Hoisting đối với class

  • 6. Kế thừa class
  • 7. Từ khóa this trong class
  • 8. Kiểm tra loại đối tượng với instanceof

9. Class và prototypes

Tổng kết

Class có thể hiểu là một khuôn mẫu.

Trong lập trình hướng đối tượng class (hay lớp) được sử dụng để tạo ra các đối tượng (mà mình đã giới thiệu ở bài đối tượng trong JavaScript).() { ... }

Đối tượng thì sẽ có các thuộc tính, phương thức.

phuongThuc1() { ... }() { ... }

phuongThuc2() { ... }() { ... }

phuongThuc3() { ... }() { ... }

Các đối tượng giống nhau sẽ có những thuộc tính và phương thức giống nhau.

Từ phiên bản ECMAScript 6 thì JavaSript hỗ trợ tạo ra class giống các ngôn ngữ lập trình hướng đối tượng khác (Java, PHP, Python...).
 

Tham khảo:

KHÓA HỌC JAVA

KHÓA HỌC PHP: 'Ngô Minh Trung',

KHÓA HỌC PYTHON: 'Nam',

MSSV: 'B1704863',: 'B1704863',

namSinh: '1999',: '1999',

Có thể xem như việc sử dụng class và object sẽ giúp chúng ta có cái nhìn chuẩn hơn về code và để những bạn mới tiếp cận lập trình JavaSript cũng thấy gần gũi hơn.

Cú pháp để tạo ra một class trong JavaSript:: function() {

// Hàm khởi tạo.log('Đang học bài...');

constructor() { ... }

diNgu: function() {: function() {

// Các phương thức.log('Đang ngủ...');

constructor() { ... }

xemPhim: function() {: function() {

// Các phương thức.log('Đang xem phim...');

Các đối tượng giống nhau sẽ có những thuộc tính và phương thức giống nhau.

Từ phiên bản ECMAScript 6 thì JavaSript hỗ trợ tạo ra class giống các ngôn ngữ lập trình hướng đối tượng khác (Java, PHP, Python...).
 

Tham khảo:

KHÓA HỌC JAVA

KHÓA HỌC PHP

KHÓA HỌC PYTHON

Có thể xem như việc sử dụng class và object sẽ giúp chúng ta có cái nhìn chuẩn hơn về code và để những bạn mới tiếp cận lập trình JavaSript cũng thấy gần gũi hơn.

Cú pháp để tạo ra một class trong JavaSript:

// Hàm khởi tạoclass:

constructor() { ... }

class SinhVien { SinhVien {

// Các phương thức

}(hoTengioiTinhMSSVnamSinh) {

this.hoTen = hoTen;.hoTen = hoTen;

this.gioiTinh = gioiTinh;.gioiTinh = gioiTinh;

this.namSinh = namSinh;.namSinh = namSinh;

}  .MSSV = MSSV;

Các đối tượng giống nhau sẽ có những thuộc tính và phương thức giống nhau.

Từ phiên bản ECMAScript 6 thì JavaSript hỗ trợ tạo ra class giống các ngôn ngữ lập trình hướng đối tượng khác (Java, PHP, Python...).

hocBai() {() {

// Hàm khởi tạo.log('Đang học bài...');

Các đối tượng giống nhau sẽ có những thuộc tính và phương thức giống nhau.

diNgu() {() {

Từ phiên bản ECMAScript 6 thì JavaSript hỗ trợ tạo ra class giống các ngôn ngữ lập trình hướng đối tượng khác (Java, PHP, Python...)..log('Đang ngủ...');

Các đối tượng giống nhau sẽ có những thuộc tính và phương thức giống nhau.

xemPhim() {() {

// Các phương thức.log('Đang xem phim...');

Các đối tượng giống nhau sẽ có những thuộc tính và phương thức giống nhau.

Từ phiên bản ECMAScript 6 thì JavaSript hỗ trợ tạo ra class giống các ngôn ngữ lập trình hướng đối tượng khác (Java, PHP, Python...).
 

Tham khảo:

KHÓA HỌC JAVA

KHÓA HỌC PHP

var sinhVien1 = new SinhVien(); sinhVien1 = new SinhVien();

var sinhVien2 = new SinhVien(); sinhVien2 = new SinhVien();

KHÓA HỌC PYTHON sinhVien3 = new SinhVien();
 

Có thể xem như việc sử dụng class và object sẽ giúp chúng ta có cái nhìn chuẩn hơn về code và để những bạn mới tiếp cận lập trình JavaSript cũng thấy gần gũi hơn.Lưu ý: Theo quy tắc thì bạn nên đặt tên class là viết HOA chữ cái đầu tiên như SinhVien, GiangVien, gioiTinh0...

2. Constructor là gì?

Cú pháp để tạo ra một class trong JavaSript: (constructor hay là hàm khởi tạo) là một phương thức đặc biệt để tạokhởi tạo một đối tượng từ một class nào đó.

// Hàm khởi tạo

constructor() { ... } constructor” trong một lớp.

// Các phương thức

}

}  

}(hoTengioiTinhMSSVnamSinh) {

this.hoTen = hoTen;.hoTen = hoTen;

this.gioiTinh = gioiTinh;.gioiTinh = gioiTinh;

}  .namSinh = namSinh;

this.MSSV = MSSV;.MSSV = MSSV;

Từ phiên bản ECMAScript 6 thì JavaSript hỗ trợ tạo ra class giống các ngôn ngữ lập trình hướng đối tượng khác (Java, PHP, Python...).
 

Tham khảo:hàm constructor thì chỉ cần dùng từ khóa gioiTinh2 và truyền vào danh sách tham số là các thuộc tính của class.

KHÓA HỌC JAVA

KHÓA HỌC PHP

constructor(a, b, c, d) {(abcd) {

KHÓA HỌC PYTHON.hoTen = a;

this.gioiTinh = b;.gioiTinh = b;

this.namSinh = c;.namSinh = c;

Có thể xem như việc sử dụng class và object sẽ giúp chúng ta có cái nhìn chuẩn hơn về code và để những bạn mới tiếp cận lập trình JavaSript cũng thấy gần gũi hơn..MSSV = d;

Từ phiên bản ECMAScript 6 thì JavaSript hỗ trợ tạo ra class giống các ngôn ngữ lập trình hướng đối tượng khác (Java, PHP, Python...).
 

Tham khảo:

KHÓA HỌC JAVA sinhVien1 = new SinhVien(abcd);
 

Tuy nhiên, để sau này dễ dàng biết thuộc tính nào kết nối với tham số nào thì chúng ta nên sử dụng tên tham số và đối số trong hàm constructor giống nhau.tên tham số và đối số trong hàm constructor giống nhau.

constructor(hoTen, gioiTinh, MSSV, namSinh) {(hoTengioiTinhMSSVnamSinh) {

this.hoTen = hoTen;.hoTen = hoTen;

this.gioiTinh = gioiTinh;.gioiTinh = gioiTinh;

this.namSinh = namSinh; .namSinh = namSinh;

this.MSSV = MSSV;.MSSV = MSSV;

}  
 

> Ghi chú: Khi tạo class thì ta gọi là tham số. Khi khởi tạo và truyền dữ liệu thì ta gọi nó là đối sốGhi chú: Khi tạo class thì ta gọi là tham số. Khi khởi tạo và truyền dữ liệu thì ta gọi nó là đối số

Chúng ta có nhiều cách gọi hàm như trong bài hàm mình có đề cập đến.

Ví dụ như sau:

// Khởi tạo các đối tượng sinh viên

var sinhVien1 = new SinhVien("Ngô Minh Trung", "Nam", "B1704863", "1999");  sinhVien1 = new SinhVien("Ngô Minh Trung""Nam""B1704863""1999");

var sinhVien2 = new SinhVien("Nguyễn Minh Đức", "Nam"); sinhVien2 = new SinhVien("Nguyễn Minh Đức""Nam");

var sinhVien3 = new SinhVien(); sinhVien3 = new SinhVien();

// Log ra thông tin đối tượng

console.log(sinhVien1);.log(sinhVien1);

console.log(sinhVien2); .log(sinhVien2);

console.log(sinhVien3);  .log(sinhVien3);
 

Kết quả ta được như sau:


> Lưu ý: Kể cả khi bạn không định nghĩa rõ ràng một constructor. JavaScript cũng sẽ tự động thêm vào một constructor rỗngLưu ý: Kể cả khi bạn không định nghĩa rõ ràng một constructor. JavaScript cũng sẽ tự động thêm vào một constructor rỗng

3. Phương thức getter và setter trong JavaScript

Các phương thức getter và setter được sử dụng để truy cập / sửa đổi thuộc tính trong class.

Có thể hiểu là một loại hàm để lấy dữ liệu và một loại hàm dùng đế gán dữ liệu.lấy dữ liệu và một loại hàm dùng đế gán dữ liệu.

3.1. Phương thức getter

Các phương thức getter được sử dụng để truy cập các thuộc tính của một đối tượng.phương thức getter được sử dụng để truy cập các thuộc tính của một đối tượng.

Để tạo phương thức getter trong JavaScript, chúng ta sử dụng từ khóa gioiTinh4.gioiTinh4.

Ví dụ:

// Các phương thức getter

get getHoTen() { getHoTen() {

return this.hoTen; this.hoTen;

}

get getGioiTinh() { getGioiTinh() {

return this.gioiTinh;  this.gioiTinh;

}

return this.gioiTinh;  getNamSinh() {

return this.hoTen; this.hoTen;

}

get getMSSV() { getMSSV() {

return this.MSSV; this.MSSV;

}  
 

return this.gioiTinh;

get getNamSinh() {

Có bao nhiêu thuộc tính thì sẽ có bấy nhiêu hàm getter trong class.

var sinhVien1 = new SinhVien("Ngô Minh Trung", "Nam", "B1704863", "1999");  sinhVien1 = new SinhVien("Ngô Minh Trung""Nam""B1704863""1999");

var sinhVien2 = new SinhVien("Nguyễn Minh Đức", "Nam");

// Log ra thông tin đối tượng.log(sinhVien1.getGioiTinh);
 

console.log(sinhVien2);

console.log(sinhVien3);  .log(sinhVien1.getGioiTinh());
 

Kết quả ta được như sau:

> Lưu ý: Kể cả khi bạn không định nghĩa rõ ràng một constructor. JavaScript cũng sẽ tự động thêm vào một constructor rỗng

3. Phương thức getter và setter trong JavaScript

Các phương thức getter và setter được sử dụng để truy cập / sửa đổi thuộc tính trong class. cho phép bạn thay đổi giá trị của thuộc tính của đối tượng.

Có thể hiểu là một loại hàm để lấy dữ liệu và một loại hàm dùng đế gán dữ liệu.

Có bao nhiêu thuộc tính thì sẽ có bấy nhiêu hàm getter trong class.

this.hoTen = hoTen;.hoTen = hoTen;

}

set setGioiTinh(gioiTinh) { setGioiTinh(gioiTinh) {

return this.gioiTinh; .gioiTinh = gioiTinh;

}

set setNamSinh(namSinh) { setNamSinh(namSinh) {

this.namSinh = namSinh;.namSinh = namSinh;

}

set setMSSV(MSSV) { setMSSV(MSSV) {

this.MSSV = MSSV;.MSSV = MSSV;

}  
 

return this.gioiTinh;

get getNamSinh() {

Có bao nhiêu thuộc tính thì sẽ có bấy nhiêu hàm getter trong class. sinhVien1 = new SinhVien("Ngô Minh Trung""Nam""B1704863""1999");

Khi chúng ta sử dụng, chúng ta có thể truy cập giá trị như là một thuộc tính.

Ví dụ:.setGioiTinh = "Nữ";

// Truy cập giới tính thông qua phương thức getter

// Log ra thông tin đối tượng.log(sinhVien1.getGioiTinh);
 

console.log(sinhVien2);

console.log(sinhVien3);  Lưu ý #1: JavaScript không hỗ trợ đầy đủ tính đóng gói trong Lập trình hướng đối tượng như Java, PHP hay Python. Vì thế, mọi thuộc tính đều có thể truy cập nếu bạn biết tên của thuộc tính đó (Giống như phạm vi truy cập public trong Java, tham khảo trong hướng dẫn: HỌC LẬP TRÌNH JAVA).

Kết quả ta được như sau:Lưu ý #2: JavaScript nguyên bản thì không hỗ trợ private, protected nhưng bạn có thể mô phỏng chúng (Tuy nhiên sẽ hơi rắc rối đó)

> Lưu ý: Kể cả khi bạn không định nghĩa rõ ràng một constructor. JavaScript cũng sẽ tự động thêm vào một constructor rỗng

3. Phương thức getter và setter trong JavaScript MSSV0 định nghĩa một phương thức static cho một lớp, còn được gọi là phương thức tĩnh.

Các phương thức getter và setter được sử dụng để truy cập / sửa đổi thuộc tính trong class.phương thức tĩnh được gọi mà không cần khởi tạo lớp của chúng và không thể được gọi thông qua một đối tượng của lớp.

Có thể hiểu là một loại hàm để lấy dữ liệu và một loại hàm dùng đế gán dữ liệu.

Có bao nhiêu thuộc tính thì sẽ có bấy nhiêu hàm getter trong class.

constructor(x, y) {(xy) {

this.x = x;.x = x;

Khi chúng ta sử dụng, chúng ta có thể truy cập giá trị như là một thuộc tính..y = y;

Ví dụ:

// Truy cập giới tính thông qua phương thức getter distance(ab) {

const dx = a.x - b.x; dx = a.x - b.x;

const dy = a.y - b.y; dy = a.y - b.y;

return Math.hypot(dx, dy); Math.hypot(dxdy);

Ví dụ:

}

return this.gioiTinh;  p1 = new Point(55);

const p2 = new Point(10, 10); p2 = new Point(1010);

p1.distance; //undefined.distance//undefined

p2.distance; //undefined.distance//undefined

console.log(Point.distance(p1, p2)); // 7.0710678118654755  .log(Point.distance(p1p2)); // 7.0710678118654755
 

Chúng ta không thể gọi hàm distance thông qua MSSV1 hoặc MSSV2. Mà phải gọi trực tiếp từ class của nó đó chính là MSSV3.

5. Hoisting đối với class

Không giống như các hàm và các khai báo JavaScript khác, các khai báo class (lớp) không được hoisting.

var sinhVien1 = new SinhVien("Ngô Minh Trung"); sinhVien1 = new SinhVien("Ngô Minh Trung");

class SinhVien {  SinhVien {

constructor(name) {(name) {

this.hoTen = hoTen;.hoTen = hoTen;

}

}  
 

Ví dụ trên sẽ tạo ra lỗi.

Để tránh lỗi, bạn phải khai báo một lớp trước khi bạn có thể sử dụng nó, như vậy:

constructor(name) {(name) {

this.hoTen = hoTen; .hoTen = hoTen;

}

}  

Ví dụ trên sẽ tạo ra lỗi. sinhVien1 = new SinhVien("Ngô Minh Trung");
 


Để tránh lỗi, bạn phải khai báo một lớp trước khi bạn có thể sử dụng nó, như vậy:

this.hoTen = hoTen; cũng hỗ trợ tính kế thừa (inheritance) như các ngôn ngữ khác, để tạo một lớp kế thừa, bạn sử dụng từ khóa MSSV4.

} SinhVien extends ConNguoi {...}
 

var sinhVien1 = new SinhVien("Ngô Minh Trung");   cho chúng ta khả năng sử dụng lại code đã viết.

6. Kế thừa class

JavaScript cũng hỗ trợ tính kế thừa (inheritance) như các ngôn ngữ khác, để tạo một lớp kế thừa, bạn sử dụng từ khóa MSSV4.

class SinhVien extends ConNguoi {...}  

constructor(hoTen, namSinh) {(hoTennamSinh) {

Kế thừa cho chúng ta khả năng sử dụng lại code đã viết..hoTen = hoTen || "unknown";

Sử dụng lại các thuộc tính và phương thức của một lớp có sẵn khi tạo một lớp mới giúp chúng ta tiết kiệm thời gian làm việc..namSinh = namSinh || "unknown";

}

getHoTen() {() {

}   "Tên " + this.hoTen + ", sinh năm " + this.namSinh;

}

}  

class SinhVien extends ConNguoi { SinhVien extends ConNguoi {

constructor(maSSV, hoTen, namSinh) {(maSSVhoTennamSinh) {

super(hoTen, namSinh);(hoTennamSinh);

Ví dụ trên sẽ tạo ra lỗi..maSSV = maSSV || "unknown";

}

getThongTin() {() {

}   this.getHoTen() + ", mã sinh viên " + this.maSSV;

}

}  

Ví dụ trên sẽ tạo ra lỗi. sinhVien1 = new SinhVien("B1704863""Ngô Minh Trung""1999");

Để tránh lỗi, bạn phải khai báo một lớp trước khi bạn có thể sử dụng nó, như vậy:.log(sinhVien1.getThongTin());
 

this.hoTen = hoTen;

}
 

var sinhVien1 = new SinhVien("Ngô Minh Trung");  

  • 6. Kế thừa classsuper() này là phương thức tham chiếu đến lớp cha. Khi chúng ta gọi phương thức super() trong hàm khởi tạo thì chúng ta gọi đến phương thức khởi tạo của lớp cha và có quyền truy cập đến các thuộc tính và phương thức khởi tạo của lớp cha.

  • JavaScript cũng hỗ trợ tính kế thừa (inheritance) như các ngôn ngữ khác, để tạo một lớp kế thừa, bạn sử dụng từ khóa MSSV4.

class SinhVien extends ConNguoi {...}  

constructor(hoTen, namSinh) {(hoTennamSinh) {

Kế thừa cho chúng ta khả năng sử dụng lại code đã viết..hoTen = hoTen || "unknown";

Sử dụng lại các thuộc tính và phương thức của một lớp có sẵn khi tạo một lớp mới giúp chúng ta tiết kiệm thời gian làm việc..namSinh = namSinh || "unknown";

}

getThongTin() {() {

}   "tên " + this.hoTen + ", sinh năm " + this.namSinh;

}

}  

class SinhVien extends ConNguoi { SinhVien extends ConNguoi {

constructor(maSSV, hoTen, namSinh) {(maSSVhoTennamSinh) {

super(hoTen, namSinh);(hoTennamSinh);

Ví dụ trên sẽ tạo ra lỗi..maSSV = maSSV || "unknown";

}

}  

Ví dụ trên sẽ tạo ra lỗi.() {

return ( (

"MSSV " + this.maSSV + ", " + super.getThongTin() + this.maSSV + ", " + super.getThongTin()

Để tránh lỗi, bạn phải khai báo một lớp trước khi bạn có thể sử dụng nó, như vậy:

}

}  

Ví dụ trên sẽ tạo ra lỗi. sinhVien1 = new SinhVien("B1704863""Ngô Minh Trung""1999");

Để tránh lỗi, bạn phải khai báo một lớp trước khi bạn có thể sử dụng nó, như vậy:.log(sinhVien1.getThongTin());
 

this.hoTen = hoTen;

}
 

var sinhVien1 = new SinhVien("Ngô Minh Trung");  

6. Kế thừa class

JavaScript cũng hỗ trợ tính kế thừa (inheritance) như các ngôn ngữ khác, để tạo một lớp kế thừa, bạn sử dụng từ khóa MSSV4.

class SinhVien extends ConNguoi {...}   thường được chỉ đến Object chứa phương thức đang được gọi thực thi.

Kế thừa cho chúng ta khả năng sử dụng lại code đã viết.gioiTinh3 được mình sử dụng ở các phần trước.

Sử dụng lại các thuộc tính và phương thức của một lớp có sẵn khi tạo một lớp mới giúp chúng ta tiết kiệm thời gian làm việc.(hoTennamSinh) {

Kế thừa cho chúng ta khả năng sử dụng lại code đã viết..hoTen = hoTen || "unknown";

Sử dụng lại các thuộc tính và phương thức của một lớp có sẵn khi tạo một lớp mới giúp chúng ta tiết kiệm thời gian làm việc..namSinh = namSinh || "unknown";

}

getThongTin() {() {

}   "Tên " + this.hoTen + ", sinh năm " + this.namSinh;

}

}  
 

Ví dụ trên sẽ tạo ra lỗi.

Để tránh lỗi, bạn phải khai báo một lớp trước khi bạn có thể sử dụng nó, như vậy:

this.hoTen = hoTen;

} còn có tác dụng xác định xem đối tượng có phải là một thể hiện (đối tượng) của một class hay không.

Để mình ví dụ:

constructor(hoTen, namSinh) {(hoTennamSinh) {

this.hoTen = hoTen || "unknown";.hoTen = hoTen || "unknown";

this.namSinh = namSinh || "unknown";.namSinh = namSinh || "unknown";

}

getThongTin() {() {

return "Tên " + this.hoTen + ", sinh năm " + this.namSinh;  "Tên " + this.hoTen + ", sinh năm " + this.namSinh;

}

return "Tên " + this.hoTen + ", sinh năm " + this.namSinh;

} sinhVien1 = new ConNguoi("Ngô Minh Trung""1999");

var sinhVien2 = {}; sinhVien2 = {};

console.log(sinhVien1 instanceof ConNguoi); // true.log(sinhVien1 instanceof ConNguoi); // true

var sinhVien1 = new ConNguoi("Ngô Minh Trung", "1999"); .log(sinhVien2 instanceof ConNguoi); // False
 

console.log(sinhVien2 instanceof ConNguoi); // False  

Như vậy ta sẽ thấy hocBai1 là một thể hiện (đối tượng) của lớp MSSV5, thế nên câu lệnh này trả về giá trị hocBai3.

Còn đối với hocBai4 là đối tượng trống, thì không phải là thể hiện của MSSV5 nên nó sẽ là hocBai6.

hocBai0 còn có thể xác định là một thể hiện của lớp con có phải là một thể hiện của lớp cha.

constructor(hoTen, namSinh) {(hoTennamSinh) {

Ví dụ:.hoTen = hoTen || "unknown";

this.hoTen = hoTen || "unknown"; .namSinh = namSinh || "unknown";

}

getHoTen() {() {

return "Tên " + this.hoTen + ", sinh năm " + this.namSinh;  "Tên " + this.hoTen + ", sinh năm " + this.namSinh;

}

return "Tên " + this.hoTen + ", sinh năm " + this.namSinh;

} SinhVien extends ConNguoi {

constructor(maSSV, hoTen, namSinh) {(maSSVhoTennamSinh) {

super(hoTen, namSinh);(hoTennamSinh);

var sinhVien1 = new ConNguoi("Ngô Minh Trung", "1999"); .maSSV = maSSV || "unknown";

}

getThongTin() {() {

return "Tên " + this.hoTen + ", sinh năm " + this.namSinh;  this.getHoTen() + ", mã sinh viên " + this.maSSV;

}

return "Tên " + this.hoTen + ", sinh năm " + this.namSinh;

} sinhVien1 = new SinhVien("B1704863""Ngô Minh Trung""1999");

console.log(sinhVien1 instanceof SinhVien); // true.log(sinhVien1 instanceof SinhVien); // true

var sinhVien1 = new ConNguoi("Ngô Minh Trung", "1999"); .log(sinhVien1 instanceof ConNguoi); // true
 

console.log(sinhVien2 instanceof ConNguoi); // False  

Như vậy ta sẽ thấy hocBai1 là một thể hiện (đối tượng) của lớp MSSV5, thế nên câu lệnh này trả về giá trị hocBai3.

Còn đối với hocBai4 là đối tượng trống, thì không phải là thể hiện của MSSV5 nên nó sẽ là hocBai6.trừu tượng hóa các nguyên mẫu (prototypes) một cách tuyệt vời.

hocBai0 còn có thể xác định là một thể hiện của lớp con có phải là một thể hiện của lớp cha.

Ví dụ:

this.hoTen = hoTen || "unknown";

this.namSinh = namSinh || "unknown"; (hoTennamSinh) {

this.hoTen = hoTen || "unknown";.hoTen = hoTen || "unknown";

this.namSinh = namSinh || "unknown";.namSinh = namSinh || "unknown";

}

getThongTin() {() {

return "Tên " + this.hoTen + ", sinh năm " + this.namSinh;  "Tên " + this.hoTen + ", sinh năm " + this.namSinh;

}

return "Tên " + this.hoTen + ", sinh năm " + this.namSinh;

} sinhVien1 = new ConNguoi("Ngô Minh Trung"1999);

console.log(sinhVien1.getThongTin());.log(sinhVien1.getThongTin());

var sinhVien1 = new ConNguoi("Ngô Minh Trung", "1999"); .log(sinhVien1 instanceof ConNguoi);
 

console.log(sinhVien2 instanceof ConNguoi); // False  

function ConNguoi(hoTen, namSinh) { ConNguoi(hoTennamSinh) {

this.hoTen = hoTen || "unknown";.hoTen = hoTen || "unknown";

this.namSinh = namSinh || "unknown";.namSinh = namSinh || "unknown";

return "Tên " + this.hoTen + ", sinh năm " + this.namSinh;

ConNguoi.prototype.getThongTin = function() {.prototype.getThongTin = function() {

} "Tên " + this.hoTen + ", năm sinh" + this.namSinh;

return "Tên " + this.hoTen + ", sinh năm " + this.namSinh;

} sinhVien1 = new ConNguoi("Ngô Minh Trung"1999);

console.log(sinhVien1.getThongTin());.log(sinhVien1.getThongTin());

var sinhVien1 = new ConNguoi("Ngô Minh Trung", "1999"); .log(sinhVien1 instanceof ConNguoi);
 

console.log(sinhVien2 instanceof ConNguoi); // False  

Như vậy ta sẽ thấy hocBai1 là một thể hiện (đối tượng) của lớp MSSV5, thế nên câu lệnh này trả về giá trị hocBai3.

Còn đối với hocBai4 là đối tượng trống, thì không phải là thể hiện của MSSV5 nên nó sẽ là hocBai6.

hocBai0 còn có thể xác định là một thể hiện của lớp con có phải là một thể hiện của lớp cha.class trong JavaSript đây chính là một điểm mới tránh các rườm rà của Object trước đây, class tường minh hơn sẽ dễ tiếp cận hơn.

Ví dụ:

this.hoTen = hoTen || "unknown";