日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

JavaScript中类型检测

發(fā)布時(shí)間:2025/6/15 javascript 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript中类型检测 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章首發(fā):?http://www.cnblogs.com/sprying/p/4349426.html

本文羅列了一般Js類型檢測(cè)的方法,是構(gòu)建Js知識(shí)體系的一小塊,這篇文章是我很早之前總結(jié)的。

一、Js中有5種基本數(shù)據(jù)類型

Undefined 、Null、Boolean、String、Number(包含NaN) NaN和任何類型的值都不相等,包括NaN;isNaN用來(lái)判斷數(shù)值是不是NaN類型??

二、類型判斷

1. isFinite(number) 是不是無(wú)窮大。如果是NaN,或者正負(fù)無(wú)窮大,或者非數(shù)字類型,則返回false。?

?

2. typeof運(yùn)算符 使用的時(shí)候,空格或者typeof(param) 返回的值 string number boolean undefined function object null也返回object 根據(jù)以上,判斷類型可以如下: var obtainType = function(o){var t;if(o === null ) return “null”;else if(o !== o) return “NaN”;else if( (t = typeof o) !== ‘object’) return t; } 可以識(shí)別出null、NaN string number boolean undefined function。 上面最后只剩下object,比如數(shù)組的識(shí)別,自定義類型的識(shí)別 3. 數(shù)組等原生類型的識(shí)別,可以采用如下 function obtainType(type) {return function (obj) {return Object.prototype.toString.call(obj) === "[object " + type + "]"} }var isObject = isType("Object") var isString = isType("String") var isArray = Array.isArray || isType("Array") var isFunction = isType("Function")

?

4. 自定義類型判斷 /*** 返回函數(shù)的名字,可能為空串;不是函數(shù),返回null*/ Function.prototype.getName = function () {if ("name" in this) return this.name;return this.name = this.toString().match(/function\s*([^(]*)\(/)[1]; };

?

原生類型和自定義類型的object都可以判斷了,于是 /*** 返回:null NaN undefined string number boolean* function Array String Object(包括一些自定義類型) 自定義類型*/ var obtainType =function(o){/*** 獲取參數(shù)類型* 對(duì)象直接量、Object.create、自定義構(gòu)造函數(shù)的類屬性皆為Object;* 識(shí)別出原生類型 (內(nèi)置構(gòu)造函數(shù)和宿主對(duì)象)*/function classOf(obj){return Object.prototype.toString.call(obj).slice(8, -1);}/*** 返回函數(shù)的名字,可能為空串;不是函數(shù),返回null*/Function.prototype.getName = function () {if ("name" in this) return this.name;return this.name = this.toString().match(/function\s*([^(]*)\(/)[1];};var t, c, n;// 處理null值特殊情形if (o === null) return "null";// NaN:和自身值不相等if (o !== o) return "NaN";// 識(shí)別出原生值類型和函數(shù)、undefinedif ((t = typeof o) !== "object") return t;// 識(shí)別出原生類型if ((c = classOf(o)) !== "Object") return c;// 返回自定義類型構(gòu)造函數(shù)名字if (o.constructor && typeof o.constructor === "function" &&(n = o.constructor.getName()))return n;return "Object"; };

?

5.

var strObj = new String('abc');typeof strObj // "object"obtainType(strObj) // "String"

?

三、?其它

1. Dom元素判斷 if(dom.nodeType){...Dom...} if(dom.createElement) 2. jQuery等類型判斷 $('#aa') instanceof jQuery//不支持跨多窗口和框架子頁(yè)面 3. if(a) a為null undefined 0 ""?NaN時(shí)自動(dòng)轉(zhuǎn)換成false 一般推薦的寫法 // bad if (name !== '') {// ...stuff... }// good if (name) {// ...stuff... }// bad if (collection.length > 0) {// ...stuff... }// good if (collection.length) {// ...stuff... }

轉(zhuǎn)載于:https://www.cnblogs.com/sprying/p/4349426.html

總結(jié)

以上是生活随笔為你收集整理的JavaScript中类型检测的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。