Maison >interface Web >js tutoriel >Comment déterminer le type de données en js
Méthode 1, méthode intégrée js typeof
Le meilleur choix pour détecter les types de données de base est d'utiliser typeof
typeof Pour déterminer le type de données, vous ne pouvez distinguer que sept types de base, à savoir "numéro", "chaîne", "non défini", "booléen", "objet", "fonction" et "symbole" (nouveau dans ES6 ).
Pour les tableaux, les valeurs nulles et les objets, la relation est compliquée et l'utilisation de typeof renverra uniformément la chaîne "objet".
Exemple :
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
Comme le montrent les résultats, sauf le retour de l'objet lors de la détection de null et la remise de la fonction lors de la détection de la fonction. Pour les types référence, la valeur de retour est object.
Méthode 2, Object.prototype.toString()
La méthode Object.prototype.toString renvoie la chaîne de type de l'objet, elle peut donc être utilisée pour déterminer le type d'une valeur.
var obj = {}; obj.toString() // "[object Object]"上面代码调用空对象的toString方法,结果返回一个字符串object Object,其中第二个Object表示该值的构造函数。这是一个十分有用的判断数据类型的方法。
Object.prototype.toString.call(value)
Le code ci-dessus signifie appeler la méthode Object.prototype.toString sur la valeur.
Les valeurs de retour de la méthode Object.prototype.toString des différents types de données sont les suivantes.
数值:返回[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]。
Ensuite, en utilisant cette fonctionnalité, vous pouvez écrire une fonction de jugement de type plus précise que l'opérateur typeof.
Encapsule une fonction pour déterminer le type comme suit :
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"
De plus : vous pouvez également ajouter une méthode pour déterminer spécifiquement un certain type de données
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(); }; });
Après cela, nous pouvons encapsuler des méthodes à utiliser pour différents besoins : comme suit
type.isObject({}) // true type.isNumber(NaN) // true type.isRegExp(/abc/) // true
Tutoriel recommandé : Tutoriel d'introduction js
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!