이 글에는 Js 지식 시스템 구축의 작은 부분인 일반적인 Js 유형 감지 방법이 나열되어 있습니다.
Null, Boolean, String, Number( NaN 포함)
NaN은 NaN을 포함한 모든 유형의 값과 동일하지 않습니다. isNaN은 값이 NaN 유형인지 확인하는 데 사용됩니다. 2. 유형 판단 1. isFinite는 (숫자) 무한대입니까? 그렇지 않은 경우, NaN이거나 양수 또는 음수 무한대이거나 숫자가 아닌 유형인 경우 false
문자열
숫자부울
정의되지 않음
함수
object
null도 object를 반환합니다위 내용을 토대로 판단 유형은 다음과 같습니다.
var obtainType = function(o){ var t; if(o === null ) return “null”; else if(o !== o) return “NaN”; else if( (t = typeof o) !== ‘object’) return t; }
는 null 및 NaN 문자열 번호 부울 정의되지 않은 함수를 식별할 수 있습니다.
배열식별, Custom Type식별등 결국 객체만 남음3. 사용
function obtainType(type) { return function (obj) { return Object.prototype.toString.call(obj) === "[object " + type + "]" } } var isObject = isType("Object") var isString = isType("String") var isArray = Array.isArray || isType("Array") var isFunction = isType("Function")
4.커스텀 타입 판단
/** * 返回函数的名字,可能为空串;不是函数,返回null */ Function.prototype.getName = function () { if ("name" in this) return this.name; return this.name = this.toString().match(/function\s*([^(]*)\(/)[1]; };
네이티브 타입과 커스텀 타입 객체 모두 판단이 가능하므로
/** * 返回:null NaN undefined string number boolean * function Array String Object(包括一些自定义类型) 自定义类型 */ var obtainType =function(o){ /** * 获取参数类型 * 对象直接量、Object.create、自定义构造函数的类属性皆为Object; * 识别出原生类型 (内置构造函数和宿主对象) */ function classOf(obj){ return Object.prototype.toString.call(obj).slice(8, -1); } /** * 返回函数的名字,可能为空串;不是函数,返回null */ Function.prototype.getName = function () { if ("name" in this) return this.name; return this.name = this.toString().match(/function\s*([^(]*)\(/)[1]; }; var t, c, n; // 处理null值特殊情形 if (o === null) return "null"; // NaN:和自身值不相等 if (o !== o) return "NaN"; // 识别出原生值类型和函数、undefined if ((t = typeof o) !== "object") return t; // 识别出原生类型 if ((c = classOf(o)) !== "Object") return c; // 返回自定义类型构造函数名字 if (o.constructor && typeof o.constructor === "function" && (n = o.constructor.getName())) return n; return "Object"; };
5.
var strObj = new String('abc'); typeof strObj // "object" obtainType(strObj) // "String"
3.
기타if(dom.createElement)
2. 🎜 >jQuery
$('#aa') jQuery//여러 창 및 프레임워크하위 페이지
확장을 지원하지 않습니다. if(a ) a null undefine 0 "" NaN일 경우 자동으로 false로 변환일반적으로 권장하는 작성방법
// bad if (name !== '') { // ...stuff... } // good if (name) { // ...stuff... } // bad if (collection.length > 0) { // ...stuff... } // good if (collection.length) { // ...stuff... }
위 내용은 JavaScript의 데이터 유형 감지 방법 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!