2014-11-23 5 views
5

Javascipt 객체 (생성자 함수의 이름) 유형을 찾고 싶습니다.하지만 시도한 모든 메소드를 사용하여 일반 '객체'를 계속 가져옵니다. 온라인으로 검색 한 결과 아직 찾은 자바 스크립트 메소드가 없습니다. 항상 객체 생성자 유형을 일반 "객체"로 반환합니다. 하지만 Chrome 콘솔에서 검사 할 때 바로 저를 응시합니다. 내가 JS에서 어떻게 그 정보를 얻을 수있는 아이디어?크롬 콘솔 및 자바 스크립트 객체 유형

추신. 차이가 나는 경우 Browserify의 내 코드를 구분하는 데 사용하고 있습니다.

enter image description here

내가 때문에이 나는 Browserify로드 생성자 함수에서 얻을 출력하기 때문에 require 코드가 얼마나 Browserify이로드 될 줄 알았는데 그 이유는 여기

enter image description here

그리고는 내가 수동으로 생성자 함수를 만들면 얻을 수있는 것 :

enter image description here

아무리 관계없이 생성자 함수를 만드는 방법과 관계없이 var Prey = function() {}var Prey = function Prey() {} Chrome 개발자는 자바가 인식하지 못하는 경우에도 생성자 함수의 이름이 무엇인지 알 수 있습니다. 아마 이것은 자바 스크립트 언어가 액세스 할 수없는 방식으로 가상 머신의 코드를 검사 할 수 있기 때문에 가능하지만 뭔가 빠져 있는지 궁금합니다. 누군가가 자바에서 인스턴스 유형을 결정하는 다른 방법을 알고 있습니까?

+3

해당 개체가 구성되어 방법을 보여주십시오. – thefourtheye

+0

'obj'를 생성 한 것이 무엇 이건간에'constructor' 속성을 올바르게 설정하지 않은 것처럼 보입니다. –

+0

@thefourtheye는 생성자 함수에 대한 추가 정보를 추가했습니다. 희망은 더 나은 맥락을 제공합니다. 감사! – ootoovak

답변

1

당신이보고있는 먹이는 function Prey(){}; 일 때 먹이이므로, 기능 이름은 먹이입니다. 먹이를 var Prey = function(){};으로 정의하면 함수 이름은 ""입니다.

기본적으로 함수 이름을 사용하려면 생성자에게 이름을 지정해야합니다. var Prey = function Prey(){};

편집 : 또는이의 변화했다는 것을 그것의 가능한 :

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

> o 
< B {}; 

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

그렇다면 왜 obj.constructor.name은 "Object"입니까? – arcyqwerty

+0

하지만 Prey로 표시되지는 않습니다. 프로토 타입을 'obj .__ proto__ = Prey.prototype'을 통해 수동으로 설정하더라도 생성자 이름과 콘솔 디스플레이가 모두 설정됩니다. – arcyqwerty