Heim >Web-Frontend >js-Tutorial >Detaillierte Erläuterung der Verwendung der js-Typbeurteilung
Dieses Mal erkläre ich Ihnen ausführlich, welche Vorsichtsmaßnahmen Sie bei der Verwendung von js-Typbeurteilungen beachten sollten. Bei der
js-Typkonvertierung erkennt typeof auch null als Objekt und der zurückgegebene Typ ist kleiner. Wir verwenden Object.prototype.toString, um
zu implementieren Die erste Version
function isArray(value){ return Object.prototype.toString.call(value) === "[object Array]"; } function isFunction(value){ return Object.prototype.toString.call(value) === "[object Function]"; }Aber so geschrieben ist es sehr mühsam, Arrays, Funktionen und Objekte einzeln zu beurteilen. Es ist prozeduraler
Die zweite Version
Wir möchten type(obj) verwenden, um den entsprechenden Typ zurückzugebenstring Da typeof Kleinbuchstaben ist, geben wir auch den Kleinbuchstabenstandard zurück
function type(obj){ // -1 代表截止到倒数一位 return Object.prototype.toString.call(obj).slice(8,-1).toLowerCase() } type([]) // "array"aber das wird jedes Mal passieren Die Notwendigkeit, die beurteilten Typen in Scheiben zu schneiden und in Kleinbuchstaben umzuwandeln, ist auch relativ leistungsintensiv, und es gibt nur wenige beurteilte Typen, sodass wir Objekte verwenden können, um mögliche Ergebnisse im Voraus zwischenzuspeichern
Dritter Edition
//将types放外面 而不是放在type函数里面, 利用闭包,优化性能,不用每次判断都声明一次typess var types = { '[object Function]': 'function', '[object Number]': 'number', ... } function type(obj) { var str = Object.prototype.toString.call(obj) return types[str] }Natürlich können wir die oben genannten Typen auch so optimieren
// 参考自jquery源码 var types = {} 当然也可以直接用数组存储 "Boolean Number String Function Array Date RegExp Object Error".split(" ").forEach(function(e,i){ types [ "[object " + e + "]" ] = e.toLowerCase(); }) ;Verwenden Sie das Fensterattribut des Fensterobjekts so, dass es gleich ist mit
function isWindow( obj ) { // obj !== undefined 是为了防止没传参数的时候后面报错 // Uncaught TypeError: Cannot read property 'window' of undefined的错误 return obj !== undefined && obj === obj.window; }
Bestimmen Sie, ob es sich um ein Dom-Element handelt
isElement = function(obj) { return !!(obj && obj.nodeType === 1); }Ich glaube, Sie haben die Methode beherrscht, nachdem Sie den Fall gelesen haben Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website! Empfohlene Lektüre:
So verwenden Sie die V-Modell-Direktive in vue.js, um eine bidirektionale Datenbindung zu erreichen
So verwenden Sie den Swiper in Vue
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung der js-Typbeurteilung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!