2014-11-23 13 views
5

Tôi muốn tìm loại đối tượng Javascipt (tên của hàm dựng) nhưng tôi chỉ giữ lại "đối tượng" chung với tất cả các phương pháp tôi đã thử. Tôi đã tìm kiếm trực tuyến và không có phương pháp Javascript tôi đã tìm thấy đã làm việc cho tôi được nêu ra. Nó luôn luôn trả về kiểu constructor đối tượng như là một "Object" chung. Tuy nhiên, có nó, nhìn chằm chằm vào tôi khi tôi kiểm tra nó trong bảng điều khiển Chrome. Bất kỳ ý tưởng làm thế nào tôi có thể nhận được thông tin đó trong JS?Bàn điều khiển Chrome và Loại đối tượng Javascript

PS. Tôi đang sử dụng yêu cầu của Browserify để tách mã của tôi nếu điều đó tạo nên sự khác biệt.

enter image description here

Lý do tôi nghĩ rằng nó có thể là do cách Browserify tải require code đang bởi vì đây là sản phẩm tôi nhận được từ một hàm constructor Browserify nạp:

enter image description here

Và đây là những gì tôi nhận được từ việc tạo hàm hàm dựng theo cách thủ công:

enter image description here

Bất kể điều đó và bất kể cách tôi tạo chức năng hàm dựng của mình var Prey = function() {} vs var Prey = function Prey() {} các công cụ của Chrome dev dường như vẫn biết tên của hàm xây dựng là gì ngay cả khi Javascript dường như không biết. Có lẽ điều này là bởi vì họ có thể kiểm tra mã trong máy ảo theo cách ngôn ngữ Javascript không có quyền truy cập nhưng tôi tự hỏi nếu tôi thiếu một cái gì đó. Có ai biết cách khác để xác định loại cá thể trong Javascript không?

+3

Hãy thể hiện như thế nào đối tượng đó được xây dựng. – thefourtheye

+0

Có vẻ như bất cứ điều gì được xây dựng 'obj' đã không thiết lập thuộc tính' constructor' đúng cách. –

+0

@thefourtheye đã thêm nhiều thông tin hơn về các chức năng của hàm tạo. Hy vọng rằng cung cấp bối cảnh tốt hơn. Cảm ơn! – ootoovak

Trả lời

1

Con mồi bạn đang thấy là con mồi khi bạn làm function Prey(){};, do đó, tên hàm là con mồi. Nếu bạn định nghĩa Prey là var Prey = function(){}; thì tên hàm là "";

Vì vậy, về cơ bản nếu bạn muốn sử dụng tên hàm, bạn phải đặt tên hàm dựng của bạn. var Prey = function Prey(){};

EDIT: hoặc có thể của nó mà bạn đã làm một sự thay đổi về điều này:

var A = function NAMED(){}; 
var B = function(){}; 
B.prototype = Object.create(A.prototype); 
var o = new B(); 

> o 
< B {}; 

> o.constructor.name 
< "NAMED" 
+0

Điều đó giải thích tại sao obj.constructor.name là "Object"? – arcyqwerty

+0

Nhưng sau đó nó sẽ không hiển thị như Prey ... Ngay cả khi bạn đặt nguyên mẫu thủ công thông qua 'obj .__ proto__ = Prey.prototype' nó sẽ đặt cả tên hàm dựng và giao diện điều khiển hiển thị. – arcyqwerty

Các vấn đề liên quan