이 기사의 예에서는 변수 유형을 결정하는 사용자 정의 함수를 기반으로 JavaScript를 구현하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.
Typeof는 일반적으로 js 변수의 유형을 결정하는 데 사용되지만 많은 경우 typeof만으로는 요구 사항을 충족할 수 없습니다.
이를 위해 맞춤 함수를 작성했는데, 판단이 더 포괄적입니다.
function varType(v){ if ( typeof v=== "object" ){ if (v=== null ) return 'null' ; if (v. constructor ) return (v. constructor .toString()).match(/(?: )[/w/$]+/)[ 0 ]; if ( typeof typeof2=== 'undefined' && window .execScript){ window .execScript( 'Function vbsTypeName(o):vbsTypeName=TypeName(o):End Function' , 'vbscript' ); window .execScript( 'function typeof2(o){return vbsTypeName(o)}' , 'jscript' ); } if ( typeof typeof2!== 'undefined' ){ return typeof2(v); } return "object" ; } return typeof v; } //对于普通js常量和js对象,各浏览器是基本一致的 alert (varType()); //undefined alert (varType( 100 )); //number alert (varType({})); //Object alert (varType([])); //Array alert (varType(/ /)); //RegExp alert (varType( new Date ())); //Date alert (varType( Date )); //function alert (varType( Object )); //function alert (varType( RegExp )); //function //对于DOM对象,各浏览器可能会有不同值 alert (varType( window )); //IE:HTMLWindow2 FF:Window alert (varType( document )); //IE:HTMLDocument FF:HTMLDocument alert (varType( document .body)); //IE:HTMLBody FF:HTMLBodyElement alert (varType( Option )); //IE:Object FF:function alert (varType( Image )); //IE:Object FF:function alert (varType( navigator )); //IE:DispHTMLNavigator FF:Navigator //以下几个只适用于IE,其他内核浏览器不支持 alert (varType( ActiveXObject )); //IE:function alert (varType( Enumerator )); //IE:function alert (varType( new ActiveXObject ( "Scripting.Dictionary" ))); //IE:Dictionary alert (varType( new Enumerator ())); //IE:Enumerator