最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript中判斷數(shù)據(jù)類型的方法總結(jié)

 更新時間:2016年05月24日 15:31:30   作者:Aaron  
比如要判斷一個變量是否是數(shù)組類型,PHP中有is_array()函數(shù)可以直接判斷,然而js中我們需要...-- well,下面我們就來詳細看一下JavaScript中判斷數(shù)據(jù)類型的方法總結(jié)

typeof
typeof用的比較多的時候,是判斷某個全局變量在不在,假如某個頁面定義了一個全局變量。假如你做如下判斷:

//haorooms是全局變量
if(haorooms!=undefined){
}//js會報錯,說"Uncaught ReferenceError: haorooms is not defined"

解決的方法是我們?nèi)缦聦懀?/p>

 if(typeof haorooms!=undefined){
 }

用了typeof之后,就不會報錯了!這是typeof的應用之一!

此外,typeof還可以進行數(shù)據(jù)類型的判斷!如下:

var haorooms="string"; console.log(haorooms); //string
var haorooms=1; console.log(haorooms); //number
var haorooms=false; console.log(haorooms); //boolean
var haorooms; console.log(typeof haorooms); //undfined

var haorooms= null; console.log(typeof haorooms); //object
var haorooms = document; console.log(typeof haorooms); //object
var haorooms = []; console.log(haorooms); //object
var haorooms = function(){}; console.log(typeof haorooms) //function  除了可以判斷數(shù)據(jù)類型還可以判斷function類型

很明顯,對于typeof,除了前四個類型外,null、對象、數(shù)組返回的都是object類型;

instanceof
可以用其判斷是否是數(shù)組。

var haorooms=[];
console.log(haorooms instanceof Array) //返回true 

constructor
constructor就是返回對象相對應的構(gòu)造函數(shù)。
判斷各種數(shù)據(jù)類型的方法:

console.log([].constructor == Array);
console.log({}.constructor == Object);
console.log("string".constructor == String);
console.log((123).constructor == Number);
console.log(true.constructor == Boolean);

function employee(name,job,born){
  this.name=name;
  this.job=job;
  this.born=born; }

var haorooms=new employee("Bill Gates","Engineer",1985); 
console.log(haorooms.constructor); //輸出function employee(name, jobtitle, born){this.name = name; this.jobtitle = job; this.born = born;}

通過輸出haorooms.constructor,可以看出constructor就是返回對象相對應的構(gòu)造函數(shù)。

Object.prototype.toString
前面我們提到了可以運用 constructor 屬性來判定物件類型,讓我們再來講講 Object.protype.toString 這個方法

Object.prototype.toString.apply({}) // "[object Object]"
Object.prototype.toString.apply([]) // "[object Array]"
Object.prototype.toString.apply(NaN)// "[object Number]"
Object.prototype.toString.apply(function(){}) // "[object Function]"

運用這種方式我們可以正確的判斷一個變量的基本型態(tài),但是如果是自訂類型的話,卻無法得知真正的類型,因為結(jié)果依然會是 [object Object]

其他
jQuery 也有類型判斷的方法,下面是一例

$.isWindow(window) // true

怎么做的呢

core.js#479
isWindow: function( obj ) {
  return obj != null && obj == obj.window;
}

所以開一個這樣的 Object:

var fakeWindow;
fakeWindow = {};
fakeWindow.window = fakeWindow;
$.isWindow(fakeWindow) // true

你就騙過他了。

小結(jié)
在 JavaScript 中要正確判斷類型,當仔細去鉆研的時候,真是一件麻煩事,根據(jù)不同的情境去設(shè)計你的判斷式是相當重要的,我們也必須要去思考如何用最簡潔的方式判斷正確的類型,當然這篇還有很多地方?jīng)]有介紹到,例如 isPrototypeOf 這個方法,JavaScript 是一個有許多歷史包袱的語言,但也是不斷的在進步,運用它的時候,要注意,有太多的方式是雙面刃,切記要小心運用。

相關(guān)文章

  • easyui-edatagrid.js實現(xiàn)回車鍵結(jié)束編輯功能的實例

    easyui-edatagrid.js實現(xiàn)回車鍵結(jié)束編輯功能的實例

    下面小編就為大家?guī)硪黄猠asyui-edatagrid.js實現(xiàn)回車鍵結(jié)束編輯功能的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Javascript節(jié)流函數(shù)throttle和防抖函數(shù)debounce

    Javascript節(jié)流函數(shù)throttle和防抖函數(shù)debounce

    這篇文章主要介紹了Javascript節(jié)流函數(shù)throttle和防抖函數(shù)debounce,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • 微信小程序開發(fā)教程之增加mixin擴展

    微信小程序開發(fā)教程之增加mixin擴展

    Mixin是一種思想,用部分實現(xiàn)的接口來實現(xiàn)代碼復用??梢杂脕斫鉀Q多繼承的問題,又可以用來擴展功能。下面這篇文章主要給大家介紹了關(guān)于為微信小程序增加mixin擴展的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • 常用的javascript function代碼

    常用的javascript function代碼

    一些javascript常見函數(shù),方便當作學習參考
    2008-05-05
  • uniapp監(jiān)聽頁面滾動2種常用方法

    uniapp監(jiān)聽頁面滾動2種常用方法

    在uni-app中,監(jiān)聽頁面滾動可以使用onPageScroll生命周期函數(shù)或@scroll事件監(jiān)聽器,onPageScroll適用于監(jiān)聽整個頁面的滾動事件,而@scroll事件監(jiān)聽器適用于監(jiān)聽特定組件如scroll-view的滾動,這兩種方法的選擇取決于監(jiān)聽需求的不同,需要的朋友可以參考下
    2024-09-09
  • js動態(tài)創(chuàng)建、刪除表格示例代碼

    js動態(tài)創(chuàng)建、刪除表格示例代碼

    生成一個2000*5的表格,每個單元格的內(nèi)容是行號+逗號+列號,具體的實現(xiàn)過程如下,感興趣的朋友可以參考下,希望對大家有所幫助
    2013-08-08
  • javascript命名約定(變量?函數(shù)?類?組件)

    javascript命名約定(變量?函數(shù)?類?組件)

    這篇小文章主要是通過一些例子來介紹一些Javascript中一些關(guān)于命名變量,函數(shù),類或者是組件的通用約定,雖然這些規(guī)則并不是強制性的,但是呢,他們卻被一些JS社區(qū)所廣泛采用,所以,了解他們還是很有必要的
    2023-03-03
  • 簡單的JS控制button顏色隨點擊更改的實現(xiàn)方法

    簡單的JS控制button顏色隨點擊更改的實現(xiàn)方法

    下面小編就為大家?guī)硪黄唵蔚腏S控制button顏色隨點擊更改的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • 讓innerText在firefox火狐和IE瀏覽器都能用的寫法

    讓innerText在firefox火狐和IE瀏覽器都能用的寫法

    下面的代碼主要是用來解決firefox瀏覽器不支持innerText的問題,需要的朋友可以參考下。
    2011-05-05
  • JS+CSS實現(xiàn)的漂亮漸變背景特效代碼(6個漸變效果)

    JS+CSS實現(xiàn)的漂亮漸變背景特效代碼(6個漸變效果)

    這篇文章主要介紹了JS+CSS實現(xiàn)的漂亮漸變背景特效代碼,包含6個漸變效果,涉及JavaScript針對頁面元素屬性動態(tài)操作的相關(guān)技巧,需要的朋友可以參考下
    2016-03-03

最新評論

肥西县| 晴隆县| 普安县| 连山| 五原县| 涞水县| 元江| 静宁县| 竹北市| 宜兰市| 海南省| 青神县| 闽侯县| 天峨县| 永丰县| 巴马| 资兴市| 太谷县| 六盘水市| 温宿县| 郧西县| 镇宁| 南乐县| 扎兰屯市| 镇巴县| 潍坊市| 萨迦县| 定陶县| 广南县| 怀来县| 梅州市| 朔州市| 浦县| 固原市| 竹溪县| 建水县| 台安县| 平和县| 濮阳县| 福泉市| 绥德县|