2013-07-05 2 views

답변

3

:이 객체 함수에서입니다

enter image description here

즉, 내장형 만 반환합니다. 당신이 시도 할 수 :

this.constructor.name==="Class"; 

그것은 this가 또는 this의 프로토 타입 클래스 있는지 확인하기 위해 프로토 타입 체인을 모든 방법을 확인합니다. 따라서 OtherType.prototype=Object.create(Class);이면 모든 OtherType 인스턴스에 해당됩니다. < IE9

또는

this instanceof Class 

에서 작동하지 않습니다하지만 그 전체 프로토 타입 체인을 확인하지 않습니다.

Here는 반환 값의 목록 대해서 typeof

Here 훨씬 더 디테일을 가지고 그것을 깰 수있는 여러 가지 방법을 보여줍니다 변수의 종류보기에 대한 답변입니다 반환 할 수 있습니다.

+0

당신 말이 맞아 ... 나는 그것을 사용하는 방법을 잊어 버렸습니다 ... – uzay95

+0

iframe에서와 같이 다른 창에서 객체를 검사하려고하면 instanceof에 숨김이 있습니다. – Tommi

+0

@Tommi Yea, 필자의 대답에 pavel의 링크를 추가 할 것입니다. 왜냐하면 훨씬 더 자세히 설명되어 있기 때문입니다. – HMR

2

자바 스크립트는 다음과 같은 유형을 알고 있기 때문에 :

정의되지 않은 -

널 (null) "정의되지 않은"- "객체"

부울 - "부울"

수 - "번호"

문자열 - "string"

호스트 o bject합니다 (JS 환경에서 제공) - 구현 - 종속

기능 개체 (구현은 ECMA-262면에서 [] 전화]) - "기능"

E4X XML 객체 - "XML"

E4X XMLList 객체 - "XML"

다른 객체 - "개체"

당신은 더 here

읽기 012를 찾을 수 있습니다개체 이름을 가져 오는 방법을 찾기위한 스레드

1

object.constructor.name은 생성자 이름을 반환합니다. 다음은 예입니다

function SomeClass() { 
    /* code */ 
} 
var obj = new SomeClass(); 
// obj.constructor.name == "SomeClass" 

것은 당신이 변수에 익명 함수를 할당하는 경우, 이름이 지정된 함수를 사용할 필요가 있음을주의, 빈 문자열이 될 것입니다 ...

var SomeClass = function() { 
    /* code */ 
}; 
var obj = new SomeClass(); 
// obj.constructor.name == "" 

하지만 모두 사용할 수 있습니다, 다음 명명 된 함수의 이름은

var SomeClassCtor = function SomeClass() { 
    /* code */ 
}; 
var obj = new SomeClassCtor(); 
// obj.constructor.name == "SomeClass" 
0

당신이뿐만 아니라

function getType(obj){ 
    if (obj === undefined) { return 'undefined'; } 
    if (obj === null) { return 'null'; } 
    return obj.constructor.name || Object.prototype.toString.call(obj).split(' ').pop().split(']').shift().toLowerCase(); 
} 

An Example Here.

function MyClass(){} 
console.log(getType(new MyClass)); // MyClass 
console.log(getType([])); // Array 
console.log(getType({})); // Object 
console.log(getType(new Array)); // Array 
console.log(getType(new Object)); // Object 
console.log(getType(new Date)); // Date 
console.log(getType(new Error)); // Error 
+0

'obj === undefined' 내 스크립트를 중단시킵니다 obj가 정의되어 있지 않으므로 테스트 할 수 없습니다 :-) 그래서 테스트에 다음을 추가 할 가치가 있습니다. 'console.log (getType (some_undefined_variable)); // undefined를 반환해야하지만 모든 브라우저에서 반환하지는 않습니다 .' – Greg0ry

관련 문제