MyTetra Share
Делитесь знаниями!
Общий подход к определению типа переменной в JavaScript
09.03.2019
00:08
Автор: br0ke
Текстовые метки: javascript, type, typeof, object, prototype
Раздел: Информационные технологии - JavaScript

В JavaScript нельзя так просто взять и определить тип переменной. Оператор typeof может определять тип только для примитивов (строка, число, булевский тип), а для остальных типов выдаст object. Есть универсальный способ определения типа:


function type(value) {

var regex = /^\[object (\S+?)\]$/;

var matches = Object.prototype.toString.call(value).match(regex) || [];


return (matches[1] || 'undefined').toLowerCase();

}


Эта функция возвращает:

console.log(type('')); // "string"

console.log(type('hello')); // "string"

console.log(type(String('hello'))); // "string"

console.log(type(new String('hello'))); // "string"


console.log(type(0)); // "number"

console.log(type(-0)); // "number"

console.log(type(0xff)); // "number"

console.log(type(-3.142)); // "number"

console.log(type(Infinity)); // "number"

console.log(type(-Infinity)); // "number"

console.log(type(NaN)); // "number"

console.log(type(Number(53))); // "number"

console.log(type(new Number(53))); // "number"


console.log(type(true)); // "boolean"

console.log(type(false)); // "boolean"

console.log(type(new Boolean(true))); // "boolean"


console.log(type(undefined)); // "undefined"


console.log(type(null)); // "null"


console.log(type(Symbol())); // "symbol"

console.log(type(Symbol.species)); // "symbol"


console.log(type([])); // "array"

console.log(type(Array(5))); // "array"


console.log((function() { return type(arguments) })()); // "arguments"


console.log(type(function() {})); // "function"

console.log(type(new Function)); // "function"


console.log(type(class {})); // "function"


console.log(type({})); // "object"

console.log(type(new Object)); // "object"


console.log(type(/^(.+)$/)); // "regexp"

console.log(type(new RegExp("^(.+)$"))); // "regexp"


console.log(type(new Date)); // "date"

console.log(type(new Set)); // "set"

console.log(type(new Map)); // "map"

console.log(type(new WeakSet)); // "weakset"

console.log(type(new WeakMap)); // "weakmap"


Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования