>웹 프론트엔드 >JS 튜토리얼 >js 유형 판단 사용에 대한 자세한 설명

js 유형 판단 사용에 대한 자세한 설명

php中世界最好的语言
php中世界最好的语言원래의
2018-05-28 13:50:261130검색

이번에는 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 명령어를 사용하는 방법

vue에서 스와이프를 사용하는 방법

위 내용은 js 유형 판단 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.