Maison  >  Article  >  interface Web  >  Explication détaillée sur l'utilisation du jugement de type js

Explication détaillée sur l'utilisation du jugement de type js

php中世界最好的语言
php中世界最好的语言original
2018-05-28 13:50:261066parcourir

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();
}) ;

Jugeobjet fenêtre

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn