PersonX = function(){};
Places một tham chiếu đến một chức năng ẩn danh vào PersonX
. PersonX
trỏ đến một hàm.
PersonY = new function(){};
Đặt tham chiếu đến thể hiện mới được xây dựng của hàm tạo hàm ẩn danh vào PersonY
. PersonY
trỏ đến một đối tượng.
Về mẫu thử nghiệm, PersonY
có một. Tuy nhiên, vì không có thuộc tính và phương thức nào được đính kèm với hàm tạo before cũng không phải là after instantiation, nó có một mẫu thử nghiệm trống *.
Bạn thực sự có thể kiểm tra nguyên mẫu của PersonY
bằng cách thực hiện console.log(PersonY)
. Bạn sẽ thấy rằng nó có một thuộc tính mẫu (tôi thấy nó là __proto__
trong Chrome) là "trống". Nhưng nó có 2 thuộc tính ẩn, constructor
là hàm tạo đã tạo đối tượng và __proto__
khác dẫn bạn đến "chuỗi liên kết" tiếp theo sẽ là đối tượng Object
.
* Không thực sự trống vì nguyên mẫu là một chuỗi. Mức nguyên mẫu này có thể trống, nhưng nguyên mẫu cao hơn tiếp theo có thể có, hoặc trong trường hợp này, không có các thuộc tính và phương thức.
Object prototype -> Constructor prototype -> Your Instance will have:
- toString() - blank - toString()
- hasOwnProperty() - hasOwnProperty()
- and more... - and more...
- ...but nothing from Constructor
Sử dụng 'hàm', không phải' hàm mới'. –
Chỉ cần làm [không bao giờ sử dụng cấu trúc thứ hai] (http://stackoverflow.com/q/10406552/1048572). – Bergi