1. 자바스크립트 데이터 자바스크립트 데이터는 단순 데이터와 복합 데이터의 두 가지 유형으로 나뉩니다. 단순 데이터에는 숫자, 문자열, 부울, 정의되지 않음 및 null의 다섯 가지 유형이 있습니다. 복합 데이터에는 객체라는 한 가지 유형만 있습니다. [여기 Li Zhan 선생님 덕분에 <
> 표현력이 풍부하고 인상적입니다.]
2. JavaScript 데이터 유형 감지
1.
먼저 typeof를 통해 간단한 데이터 유형을 얻는 방법을 테스트해 보겠습니다. 아무 말도 하지 마세요. 코드가 왕입니다.
/ / 변수 obj의 데이터 유형을 가져옵니다.
function getType(obj) {
return typeof(obj)
}
/*상수 가져오기 유형*/
alert(getType) (1)); //숫자
alert(getType("jeff wong")); //string
alert(getType(true)) //boolean
alert(getType(undefine)); //정의되지 않음
alert(getType(null)); //객체
/*변수 가져오기 유형*/
var num = 1; var str = "jeff wong"
var 플래그 = true;
var hell = 정의되지 않음;
var none = null
alert(getType(num)); //숫자
alert(getType(str)) //string >alert(getType( 플래그)); //부울
alert(getType(hell)); //정의되지 않음
alert(getType(none)) //객체
그런 식으로 typeof 연산자를 통해 처음 4개의 단순 데이터 유형이 완전히 예상되지만 typeof null이 객체를 반환하는 것을 볼 수 있습니다. null은 null 타입의 유일한 값이지만 null은 객체가 아니고, null 값을 갖는 변수는 객체가 아니기 때문에 typeof를 통해 직접적으로 null 타입을 얻을 수 없다는 점에 유의해야 합니다. 간단한 데이터 유형을 올바르게 얻으려면 getType에 몇 가지 개선 사항을 추가하기만 하면 됩니다.
function getType(obj) { return (obj === null) ? "null" : typeof (obj)
}
다음에 시도해 보겠습니다. 데이터 유형 객체:
function Cat() { }
Cat.prototype.CatchMouse = function () {
//do some thing
}
// 변수 obj의 데이터 유형 가져오기
function getType(obj) {
return (obj === null) ? "null" : typeof (obj)
var obj = new Object()
alert(getType(obj));
var func = new Function();
alert(getType(func)); //함수
var str = new String("jeff wong")
alert(getType(str)) ; // 객체
var num = new Number(10);
alert(getType(num)); //객체
var time = new Date()
alert(getType(time) ); / /객체
var arr = new Array();
alert(getType(arr)); //객체
var reg = new RegExp()
alert(getType(reg) ); / /object
var garfield = new Cat();
alert(getType(garfield)); //object
Function만 제외하면 됩니다. Object, String, Date 등과 같은 JavaScript의 공통 내장 객체이든 사용자 정의 함수이든 관계없이 typeof에 의해 반환되는 모든 객체는 예외 없이 모두 객체입니다. 그러나 사용자 정의 함수의 경우 "진짜 얼굴"(예: 객체가 아닌 Cat)을 얻는 것을 선호하며 분명히 typeof에는 이러한 변환 처리 기능이 없습니다.
2. 생성자님, 사랑한다고 크게 말하고 싶어요
유니버셜 타입of는 가끔 해결책이 없는데, 변수가 커스텀 함수 인스턴스인지 어떻게 판단하나요? JavaScript의 모든 객체에는 생성자 속성이 있다는 것을 알고 있습니다. 이 속성은 특히 사용자 정의 함수의 경우 객체 데이터 유형을 결정하는 데 도움이 될 수 있습니다.
alert(obj.constructor == String) //true obj = new Cat ();
alert(obj.constructor == Cat); //true
그러나 다음 코드를 사용하여 테스트할 수도 있습니다.