Với đoạn mã sau:Làm cách nào tôi có thể thấy chuỗi nguyên mẫu của đối tượng Javascript?
function a() {}
function b() {}
b.prototype = new a();
var b1 = new b();
Chúng tôi có thể ở lại đó a
đã được thêm vào b
's chuỗi nguyên mẫu. Tuyệt quá. Và, tất cả những điều sau đây là đúng:
b1 instanceof b
b1 instanceof a
b1 instanceof Object
Câu hỏi của tôi là, nếu chúng ta không biết nguồn gốc của b1
trước thời hạn? Làm thế nào chúng ta có thể khám phá các thành viên của chuỗi nguyên mẫu của nó? Lý tưởng nhất là tôi muốn một mảng như [b, a, Object]
hoặc ["b", "a", "Object"]
.
Điều này có khả thi không? Tôi tin rằng tôi đã nhìn thấy một câu trả lời ở đâu đó trên SO mô tả làm thế nào để tìm ra chỉ này, nhưng tôi không thể cho cuộc sống của tôi tìm thấy nó một lần nữa.
'hàm tạo' cung cấp cho bạn chức năng hàm tạo của tổ tiên nguyên mẫu gần nhất mà không được kế thừa từ một nguyên mẫu xây dựng khác. Điều này gần như không bao giờ những gì bạn muốn. Ví dụ trong mã của câu hỏi, 'b1.constructor' là' a', không phải 'b', và nếu bạn bắt nguồn một đối tượng' c' từ 'b',' c1.constructor' sẽ vẫn là 'a'. Quy tắc bình thường của ngón tay cái: Không sử dụng 'constructor' cho bất cứ điều gì bao giờ hết. [eta: lol @ 'sợ hãi và cô đơn' ... vâng, đây là một trong những phần của JavaScript được thiết kế để gây nhầm lẫn cho bạn bằng cách làm một cái gì đó có vẻ hữu ích nhưng thực sự là một cái bẫy.] – bobince
Vâng, tôi xem xét câu hỏi ban đầu một bài tập thú vị nhưng nó không bao giờ là cái gì tôi muốn đưa vào mã mà tôi mong đợi để thực sự làm việc. Có một lời giải thích thực sự tốt đẹp ở đây: http://mckoss.com/jscript/object.htm – Pointy