Maison > Article > interface Web > Explication détaillée sur l'utilisation du jugement de type js
Cette fois, je vais vous apporter une explication détaillée de l'utilisation du jugement de type js. Quelles sont les précautions lors de l'utilisation du jugement de type js. Ce qui suit est un cas pratique, jetons un coup d'œil. Dans la conversion de type
js , typeof reconnaîtra également null comme objet, et le type renvoyé est inférieur. Nous utilisons Object.prototype.toString pour implémenter
. La première version
function isArray(value){ return Object.prototype.toString.call(value) === "[object Array]"; } function isFunction(value){ return Object.prototype.toString.call(value) === "[object Function]"; }
Mais écrite comme ça, il est très gênant de juger les tableaux, les fonctions et les objets un par un. C'est plus procédural
La. deuxième version
Nous voulons utiliser type(obj) pour renvoyer le type chaîne correspondant. Parce que typeof est en minuscule, nous renvoyons également la norme minuscule
function type(obj){ // -1 代表截止到倒数一位 return Object.prototype.toString.call(obj).slice(8,-1).toLowerCase() } type([]) // "array"<.> mais de cette façon, il est relativement gourmand en performances d'effectuer slice et toLowerCase sur le type jugé à chaque fois, et il n'y a que quelques types jugés, nous pouvons donc utiliser des objets pour mettre en cache les résultats possibles à l'avance
Troisième édition
//将types放外面 而不是放在type函数里面, 利用闭包,优化性能,不用每次判断都声明一次typess var types = { '[object Function]': 'function', '[object Number]': 'number', ... } function type(obj) { var str = Object.prototype.toString.call(obj) return types[str] }Bien sûr, nous pouvons également optimiser les types ci-dessus comme celui-ci
// 参考自jquery源码 var types = {} 当然也可以直接用数组存储 "Boolean Number String Function Array Date RegExp Object Error".split(" ").forEach(function(e,i){ types [ "[object " + e + "]" ] = e.toLowerCase(); }) ;Utilisez l'attribut window de l'objet window pour qu'il soit égal à lui-même
function isWindow( obj ) { // obj !== undefined 是为了防止没传参数的时候后面报错 // Uncaught TypeError: Cannot read property 'window' of undefined的错误 return obj !== undefined && obj === obj.window; }
pour déterminer s'il s'agit d'un élément dom
isElement = function(obj) { return !!(obj && obj.nodeType === 1); }Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article, et plus encore. Comme c'est excitant, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php ! Lecture recommandée :
Comment utiliser la directive v-model dans vue.js pour obtenir une liaison de données bidirectionnelle
Comment utiliser swiper dans vue
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!