방법 1, js 내장 메소드 typeof
기본 데이터 유형을 감지하는 가장 좋은 선택은 typeof
typeof를 사용하여 기본 유형만 구분할 수 있는 데이터 유형, 즉 "number"를 결정하는 것입니다. ", "문자열"," "정의되지 않음", "부울", "객체", "함수", "기호"(ES6의 새로운 기능) 7가지 유형입니다.
배열, null 및 객체의 경우 관계가 복잡하며 typeof를 사용하면 "객체" 문자열이 균일하게 반환됩니다.
예:
var bool = true var num = 1 var str = 'abc' var und = undefined var nul = null var arr = [1,2,3] var obj = {} var fun = function(){} var reg = new RegExp() console.log(typeof bool); //boolean console.log(typeof num); //number console.log(typeof str); //string console.log(typeof und); //undefined console.log(typeof nul); //object console.log(typeof arr); //object console.log(typeof obj); //object console.log(typeof reg); //object console.log(typeof fun); //function
null을 감지할 때 객체를 반환하고 함수를 감지할 때 함수를 다시 넣는 것을 제외하고는 결과에서 볼 수 있습니다. 참조 유형의 경우 반환 값은 object입니다.
메서드 2, Object.prototype.toString()
Object.prototype.toString 메소드는 객체의 유형 문자열을 반환하므로 값의 유형을 결정하는 데 사용할 수 있습니다.
var obj = {}; obj.toString() // "[object Object]"上面代码调用空对象的toString方法,结果返回一个字符串object Object,其中第二个Object表示该值的构造函数。这是一个十分有用的判断数据类型的方法。
Object.prototype.toString.call(value)
위 코드는 값에 대해 Object.prototype.toString 메서드를 호출하는 것을 의미합니다.
다양한 데이터 유형의 Object.prototype.toString 메서드의 반환 값은 다음과 같습니다.
数值:返回[object Number]。 字符串:返回[object String]。 布尔值:返回[object Boolean]。 undefined:返回[object Undefined]。 null:返回[object Null]。 数组:返回[object Array]。 arguments 对象:返回[object Arguments]。 函数:返回[object Function]。 Error 对象:返回[object Error]。 Date 对象:返回[object Date]。 RegExp 对象:返回[object RegExp]。 其他对象:返回[object Object]。
그러면 이 기능을 사용하면 typeof 연산자보다 더 정확한 유형 판단 함수를 작성할 수 있습니다.
다음과 같이 유형을 결정하는 함수를 캡슐화합니다.
var type = function (o){ var s = Object.prototype.toString.call(o); return s.match(/\[object (.*?)\]/)[1].toLowerCase(); }; type({}); // "object" type([]); // "array" type(5); // "number" type(null); // "null" type(); // "undefined" type(/abcd/); // "regex" type(new Date()); // "date"
또한: 특정 유형의 데이터를 구체적으로 결정하는 메서드를 추가할 수도 있습니다.
var type = function (o){ var s = Object.prototype.toString.call(o); return s.match(/\[object (.*?)\]/)[1].toLowerCase(); }; var arr = ['Null', 'Undefined', 'Object', 'Array', 'String', 'Number', 'Boolean', 'Function', 'RegExp'] arr.forEach(function (t) { type['is' + t] = function (o) { return type(o) === t.toLowerCase(); }; });
그 후, 캡슐화된 메서드를 사용하여 다른 필요에 따라 사용할 수 있습니다. 발생: 다음과 같이
type.isObject({}) // true type.isNumber(NaN) // true type.isRegExp(/abc/) // true
추천 튜토리얼: js 입문 튜토리얼
위 내용은 js에서 데이터 유형을 결정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!