javascript 은 변수 가 배열 인지 대상 인지 판단 합 니 다.
판단 방법
1.typeof
type of 를 사용 하여 변수의 신분 을 판단 할 수 있 습 니 다.문자열 은 string,숫자 와 NaN 은 number,함 수 는 function 등 을 얻 을 수 있 습 니 다.그러나 배열,대상 과 null 을 판단 할 때 object 를 얻 을 수 있 습 니 다.js 데이터 형식 을 자세히 보 세 요.이것 이 type of 의 한계점 입 니 다.이 변수의'실제 신분'을 정확하게 판단 할 수 없습니다.그러면 하나의 변수 가 배열 인지 대상 인지 어떻게 판단 합 니까?
2.instanceof
인 스 턴 스 of 를 사용 하면 하나의 변수 가 배열 인지 대상 인지 판단 할 수 있 습 니 다.원 리 는 다음 과 같 습 니 다.
배열 도 대상 의 일종 으로 인 스 턴 트 of 를 사용 하면 true 로 돌아 갑 니 다.
var arr = new Array();
var arr = ['aa','bb','cc'];
var obj = { a: 'aa', b: 'bb', c: 'cc' };
console.log(arr instanceof Array); //true
console.log(arr instanceof Object); //true
console.log(obj instanceof Array); //false
console.log(obj instanceof Object); //true
instanceof 는 어떻게 판단 합 니까?instanceof 연산 자 는 대상 이 원형 체인 에 구조 함수 의 prototype 속성 이 존재 하 는 지 테스트 하 는 데 사 용 됩 니 다.즉,이 변 수 는 원형 체인 을 통 해 구조 함수 의 prototype 속성 을 찾 을 수 있 는 지,원형 체인 의 원형 체인 을 잘 모 르 기 때문에 왜 인 스 턴 스 of 가 하나의 변 수 를 판단 하면 배열 인지 대상 인지 구분 할 수 있 습 니 다.
Array.prototype === arr.__proto__
Object.prototype === arr.__proto__.__proto__
arr 의 프로 토 타 입 체인 에 Array.prototype 과 Object.prototype 이 존재 하기 때 문 입 니 다.
Array 형식의 변수 만 arr instanceof Array 와 arr instanceof Object 를 만족 시 킬 수 있 습 니 다.
Object 형식 변수 만 만족 합 니 다.obj instanceof Array 는 false 를 되 돌려 주 고,obj instanceof Object 는 true 를 되 돌려 줍 니 다.
3.constructor
var arr = ['aa','bb','cc'];
var obj = {
'a': 'aa',
'b': 'bb',
'c': 'cc'
};
console.log(arr.constructor === Array); //true
console.log(arr.constructor === Object); //false
console.log(obj.constructor === Object); //true
4.Object.prototype.toString.call()Object.prototype.toString.call()방법 은 변수 유형 을 정확하게 판단 할 수 있 습 니 다.[object constructorName]의 문자열 형식 을 되 돌려 줍 니 다.여기 constructorName 은 call 매개 변수의 함수 이름 입 니 다.
var a = NaN;
var b= '222';
var c = null;
var d = false;
var e = undefined;
var f = Symbol();
var arr = ['aa','bb','cc'];
var obj = { 'a': 'aa', 'b': 'bb', 'c': 'cc' };
var res = Object.prototype.toString.call(arr);
console.log(res);
//[object Array] var res2 = Object.prototype.toString.call(obj); console.log(res2); //[object Object] var res3 = Object.prototype.toString.call(a); console.log(res3); //[object Number] var res4 = Object.prototype.toString.call(b); console.log(res4); //[object String] var res4 = Object.prototype.toString.call(c); console.log(res4); //[object Null] var res5 = Object.prototype.toString.call(d); console.log(res5); //[object Boolean] var res6 = Object.prototype.toString.call(e); console.log(res6); //[object Undefined] var res7 = Object.prototype.toString.call(f); console.log(res7); //[object Symbol]// JavaScript Document
총화간단 한 데이터 형식 을 판단 할 때 type:of,배열 을 판단 할 수 있 습 니 다.대상 은 instanceof,constructor,Object.prototype.toString.call()을 사용 하고 Object.prototype.toString.call()을 사용 하 는 것 이 좋 습 니 다.더욱 정확 합 니 다.
위 에서 말 한 것 은 소 편 이 여러분 에 게 소개 한 자 바스 크 립 트 가 하나의 변수 가 수조 인지 대상 인지 상세 하 게 통합 되 었 는 지 판단 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.만약 에 궁금 한 점 이 있 으 시 면 저 에 게 메 시 지 를 남 겨 주세요.소 편 은 제때에 여러분 에 게 답장 을 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thymeleaf 의 일반 양식 제출 과 AJAX 제출텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.