Hỏi về thuộc tính __proto__ của prototype trong JS

chào Các Bạn, mình đang học về prototype, nhưng ko hiểu đoạn này họ viết.


mình chưa hiểu tại sao, đối tượng prototype lại sinh ra thuộc tính __proto__ trỏ đến chính nó để làm gì nhỉ?
thuộc tính contructor có thể hiểu dùng để lấy function, cái đó dễ dàng hiểu dc, còn tại sao prototype lại có thuộc tính __proto__ có ích gì cơ?
thanks!

không phải trỏ đến chính nó mà là trỏ đến cha của nó

6 Likes

Thuộc tính __proto__ của objects là link tới thuộc tính prototype của function tạo ra nó.
Ví dụ như code của bạn ở trên, thì function Student tạo ra studObj, do đó Student.prototype === studObj.__proto__ là true.

Chỗ này sai nha, __proto__ là của objects chứ không phải prototype.

3 Likes

Tức là có lỗi sai trong nội dung trong tutorial kia, đối tượng prototype không có thuộc tính : __proto__ đúng ko ạ?

Bất kì tên (biến, hàm,…) nào (trừ từ khóa) trong javascript đều có __proto__.
Và nó trỏ đến nguyên mẫu (prototype) của hàm tạo ra nó.

Trừ 1 số ngoại lệ cho các giá trị nguyên thủy (số) và Object, vì Object là lớp đầu tiên (gốc) nên sẽ trả về null.

Chạy thử:

var x = 12;
console.log(x.__proto__, typeof(x.__proto__), x.__proto__.toString());

:confounded:

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?