Có, tôi đã thấy câu hỏi này và được trả lời trước đây. Nhưng đây là những gì tôi vẫn không hiểu:Còn một "cách tìm tên lớp/hàm tạo của đối tượng Javascript"?
Nếu tôi tạo hàm dựng và không ghi đè thuộc tính prototype
của hàm, thì chúng tôi có thuộc tính tự động constructor
treo thuộc tính prototype
của hàm. Đó là MyConstructor.prototype.constructor === MyConstructor
=> true. Tuyệt quá. Nhưng bây giờ điều gì sẽ xảy ra khi tôi ghi đè lên prototype
với đối tượng của riêng mình và không sửa đổi thuộc tính constructor
? constructor
hiện không tồn tại trên prototype
và nếu được tham chiếu chỉ tìm thấy chuỗi mẫu thử nghiệm, đó là MyConstructor.prototype.constructor === Object
=> true. Khỏe. Vì vậy ...
Tại sao trong trình gỡ lỗi Javascript (như Chrome), nếu tôi ghi đè nguyên mẫu của một hàm tạo với đối tượng của riêng tôi và tạo mới một cá thể của hàm tạo đó, sau đó nhập biến mẫu đó trên lệnh dòng, Chrome vui vẻ nói với tôi loại? Làm thế nào nó biết? I E. tôi có thể làm gì để tìm ra điều tương tự thông qua mã?
Simple repro:
> function Foo() {}
undefined
> Foo.prototype.constructor === Foo
true
> Foo.prototype = {}
Object
> Foo.prototype.constructor === Foo
false
> f = new Foo()
Foo
> f
Foo
Có tinh khiết debugger kỳ diệu?
Hiệp hội vẫn còn ở đâu đó - vì 'f instanceof Foo' trả về' true' - nhưng tôi không nghĩ rằng nó được hiển thị với mã người dùng. Whcih tôi đoán làm cho nó tinh khiết debugger ma thuật. –
Điều này dường như có liên quan –
g13n
firefox dường như thiếu ma thuật trình gỡ lỗi vì f = new Foo() và f dòng đều trả về [object Object] mà câu trả lời được liên kết ở trên giải thích – nvuono