어디에서 잘못 했습니까?javascript typeof가 항상 "객체"를 반환하는 이유
이 코드의 결과로 "클래스"를 기다릴 것이다 그러나 그것은하지 않습니다 같은 나던 작업 Tyepof
어디에서 잘못 했습니까?javascript typeof가 항상 "객체"를 반환하는 이유
이 코드의 결과로 "클래스"를 기다릴 것이다 그러나 그것은하지 않습니다 같은 나던 작업 Tyepof
:이 객체 함수에서입니다
즉, 내장형 만 반환합니다. 당신이 시도 할 수 :
this.constructor.name==="Class";
그것은 this
가 또는 this
의 프로토 타입 클래스 있는지 확인하기 위해 프로토 타입 체인을 모든 방법을 확인합니다. 따라서 OtherType.prototype=Object.create(Class);
이면 모든 OtherType 인스턴스에 해당됩니다. < IE9
또는
this instanceof Class
에서 작동하지 않습니다하지만 그 전체 프로토 타입 체인을 확인하지 않습니다.
Here는 반환 값의 목록 대해서 typeof
Here 훨씬 더 디테일을 가지고 그것을 깰 수있는 여러 가지 방법을 보여줍니다 변수의 종류보기에 대한 답변입니다 반환 할 수 있습니다.
자바 스크립트는 다음과 같은 유형을 알고 있기 때문에 :
정의되지 않은 -
널 (null) "정의되지 않은"- "객체"
부울 - "부울"
수 - "번호"
문자열 - "string"
호스트 o bject합니다 (JS 환경에서 제공) - 구현 - 종속
기능 개체 (구현은 ECMA-262면에서 [] 전화]) - "기능"
E4X XML 객체 - "XML"
E4X XMLList 객체 - "XML"
다른 객체 - "개체"
는당신은 더 here
읽기 012를 찾을 수 있습니다개체 이름을 가져 오는 방법을 찾기위한 스레드
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"
당신이뿐만 아니라
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();
}
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
'obj === undefined' 내 스크립트를 중단시킵니다 obj가 정의되어 있지 않으므로 테스트 할 수 없습니다 :-) 그래서 테스트에 다음을 추가 할 가치가 있습니다. 'console.log (getType (some_undefined_variable)); // undefined를 반환해야하지만 모든 브라우저에서 반환하지는 않습니다 .' – Greg0ry
의'를 시도 할 수 반환됩니다 .constructor.name' – elclanrs