이번에는 js 타입 판단 사용에 대한 자세한 설명을 가져오겠습니다. js 타입 판단 사용 시 주의 사항은 무엇인가요?
jstype 변환의 Typeof도 null을 객체로 인식하며 반환되는 유형은 더 적습니다. Object.prototype.toString을 사용하여
첫 번째 버전
function isArray(value){ return Object.prototype.toString.call(value) === "[object Array]"; } function isFunction(value){ return Object.prototype.toString.call(value) === "[object Function]"; }
을 구현합니다. 하지만 이렇게 하나씩 작성합니다. 배열, 함수 및 객체를 판단하는 것은 매우 번거롭습니다.
Second Edition
type(obj)을 사용하여 해당 유형string을 반환하려고 합니다. return lowercase 표준
function type(obj){ // -1 代表截止到倒数一位 return Object.prototype.toString.call(obj).slice(8,-1).toLowerCase() } type([]) // "array"
그러나 매번 판단되는 유형을 슬라이싱하고 LowerCase하는 것은 상대적으로 성능 집약적이며 판단되는 유형이 소수이므로 객체를 사용하여 가능한 결과를 미리 캐시할 수 있습니다
제3판
//将types放外面 而不是放在type函数里面, 利用闭包,优化性能,不用每次判断都声明一次typess var types = { '[object Function]': 'function', '[object Number]': 'number', ... } function type(obj) { var str = Object.prototype.toString.call(obj) return types[str] }
물론 위의 유형도 이런 방식으로 최적화할 수 있습니다
// 参考自jquery源码 var types = {} 当然也可以直接用数组存储 "Boolean Number String Function Array Date RegExp Object Error".split(" ").forEach(function(e,i){ types [ "[object " + e + "]" ] = e.toLowerCase(); }) ;
Judgewindow object
window 개체의 window 속성을 그 자체와 동일하게 사용하세요
function isWindow( obj ) { // obj !== undefined 是为了防止没传参数的时候后面报错 // Uncaught TypeError: Cannot read property 'window' of undefined的错误 return obj !== undefined && obj === obj.window; }
dom element
isElement = function(obj) { return !!(obj && obj.nodeType === 1); }
이 기사를 읽으셨을 것입니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!
추천 자료:
양방향 데이터 바인딩을 달성하기 위해 vue.js에서 v-model 명령어를 사용하는 방법
위 내용은 js 유형 판단 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!