亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

基礎(chǔ)一:JS數(shù)據(jù)類型

codecook / 2276人閱讀

摘要:本文章主要總結(jié)一下數(shù)據(jù)類型的識(shí)別判斷方法最后封裝一個(gè)函數(shù),可以判別所有的類型數(shù)據(jù)類型基本類型類型該類型只有一個(gè)值,即小寫,在使用聲明變量但是未對其加以初始化時(shí),這個(gè)變量的值就是。

*本文章主要總結(jié)一下js數(shù)據(jù)類型的識(shí)別判斷方法
tyoeof
instanceof
Object.prototype.toString.call
constructor
最后封裝一個(gè)函數(shù),可以判別所有的類型*

1.數(shù)據(jù)類型

基本類型:

Undefined類型:該類型只有一個(gè)值,即undefined(小寫),在使用var聲明變量但是未對其加以初始化時(shí),這個(gè)變量的值就是undefined。

Null類型:該類型也只有一個(gè)值,即null(小寫),null值表示一個(gè)空對象指針,所以用typeof操作符檢測null值會(huì)返回object的原因。

Boolean類型:改類型有兩個(gè)值:true和false(小寫)。

Number類型:表示整數(shù)和浮點(diǎn)數(shù)

String類型:即字符串

引用類型

Object類型:即對象

Array類型:數(shù)組

Date類型:日期

RegExp類型:正則

Function類型

2.類型的識(shí)別的判斷方法 (1)typeof總結(jié):

首先typeof不是方法,只是一個(gè)操作符。

可以識(shí)別標(biāo)準(zhǔn)類型(Null除外

不能識(shí)別具體的對象類型(Function除外

返回的值首字母都是小寫?。。。。。。?!

    //識(shí)別標(biāo)準(zhǔn)類型
        typeof "jerry";      //"string"
        typeof 12;           //"number"
        typeof true;         //"boolean"
        typeof undefined;   //"undefined"
        typeof null;         //"object"
        typeof {name:"jerry"};   //"object"
        
    //識(shí)別引用類型
        typeof function(){};  //"function"
        typeof [];            //"object"
        typeof new Date;     //"object"
        typeof /d/;         //"object"
        //創(chuàng)建一個(gè)自定義對象
        function Person(){};
        typeof new Person;      //"object"
(2)instanceof
    //能夠判別引用類型
    [] instanceof Array;       //true
    /d/ instanceof RegExp;    //true
    new Date instanceof Date;  //true
    var a = function(){}; 
    a instanceof Function;     //true
   
    //不能判別原始類型
    1 instanceof Number;          //false
    "jerry" instanceof String;  //false
    
    //能夠判別自定義對象類型及父子類型
    //自定義類型
    function Person(){};
    Person instanceof Function;  //true
    //父子類型
    function Point(x,y){
        this.x = x;
        this.y = y;
    }
    function Cirele(x,y,r){
        Point.call(this,x,y);
        this.radius = r;
    }
    Circle.prototype = new Point();
    Circle.prototype.constructor = Circle;
    var c = new Circle(1,1,2);
    c instanceof Circle  //true
    c instanceof Point  //true

結(jié)論

可以判別內(nèi)置對象類型

不能判別原始類型

判別自定義對象類型

結(jié)合1和3,用instanceof可以識(shí)別所有的對象類型

(3)Object.prototype.toString.call
    Object.prototype.toString.call("123");    //"[object String]"
    
    //封裝函數(shù),并做截取
    function type(obj){
        return Object.prototype.toString.call(obj).slice(8,-1);
    }
    //測試
    type("123");  //"String"
    
    //自定義類型
    function Point(x,y){
        this.x = x;
        this.y = y;
    }
    //測試
    type(new Point(1,2));       //"Object"

結(jié)論:

上述封裝的函數(shù)可以識(shí)別基本類型以及引用對象類型

不能識(shí)別自定義對象類型

(4)constructor(構(gòu)造這個(gè)對象的構(gòu)造函數(shù)的本身)
    //判斷基本類型(基本類型也有構(gòu)造函數(shù));但是null和undefined除外,它倆沒有構(gòu)造函數(shù)
    "jerry".constructor === String;  //true
    (1).constructor ===Number;        //true
    
    //判斷引用類型
    new Date().constructor === Date;  //true
    [].constructor === Array;   //true
    
    //判斷自定義對象
    function Person(name){
        this.name = name;
    }
    new Person("jerry").constructor === Person; //true
    
    //對constructor判別進(jìn)行方法的封裝
    function getConstructorName(obj){
        return (obj===undefined||obj===null)?obj:        
           (obj.constructor && obj.constructor.toString().match(/functions*([^(]*)/)[1]);
    }

封裝的原理:

obj:假如傳入的參數(shù)是null或者undefined,沒有構(gòu)造函數(shù)直接返回

obj.constructor如果存在執(zhí)行&&后面的語句

obj.constructor.toString():將類型對應(yīng)的構(gòu)造函數(shù)轉(zhuǎn)化成字符串 "Function Number(){code...}"

math(/functions*([^(]*)/)[1]:匹配構(gòu)造函數(shù)的名稱,正則匹配

結(jié)論:

判別基本類型(Undefined/Null除外)

判別引用類型

判別自定義對象類型

結(jié)論:所以可以封裝一個(gè)函數(shù)getConstructorName判斷所有類型,但是這個(gè)函數(shù)返回的除了null和undefined是小寫之外,其他的首字母都是大寫。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/79936.html

相關(guān)文章

  • Js基礎(chǔ)知識(shí)() - 變量

    摘要:內(nèi)置函數(shù)和對象中內(nèi)置了一些函數(shù)和對象,很多語言都會(huì)有內(nèi)置的方法,直接可以調(diào)用開發(fā)。根據(jù)語法標(biāo)準(zhǔn)提供的內(nèi)置函數(shù)包括和。注意基礎(chǔ)語法提供的內(nèi)置函數(shù)和方法只有這些,像那是瀏覽器提供給我們的。強(qiáng)制類型轉(zhuǎn)換大家應(yīng)該都知道。 js基礎(chǔ) - 變量 *大家對js一定不會(huì)陌生,入門很簡單(普通入門),很多人通過網(wǎng)絡(luò)資源、書籍、課堂等很多途徑學(xué)習(xí)js,但是有些js基礎(chǔ)的只是往往被大家遺漏,本章就從js變量...

    leone 評論0 收藏0
  • Js基礎(chǔ)知識(shí)() - 變量

    摘要:內(nèi)置函數(shù)和對象中內(nèi)置了一些函數(shù)和對象,很多語言都會(huì)有內(nèi)置的方法,直接可以調(diào)用開發(fā)。根據(jù)語法標(biāo)準(zhǔn)提供的內(nèi)置函數(shù)包括和。注意基礎(chǔ)語法提供的內(nèi)置函數(shù)和方法只有這些,像那是瀏覽器提供給我們的。強(qiáng)制類型轉(zhuǎn)換大家應(yīng)該都知道。 js基礎(chǔ) - 變量 *大家對js一定不會(huì)陌生,入門很簡單(普通入門),很多人通過網(wǎng)絡(luò)資源、書籍、課堂等很多途徑學(xué)習(xí)js,但是有些js基礎(chǔ)的只是往往被大家遺漏,本章就從js變量...

    MageekChiu 評論0 收藏0
  • 前端基礎(chǔ)進(jìn)階():內(nèi)存空間詳細(xì)圖解

    摘要:一棧數(shù)據(jù)結(jié)構(gòu)與不同,中并沒有嚴(yán)格意義上區(qū)分棧內(nèi)存與堆內(nèi)存。引用數(shù)據(jù)類型的值是保存在堆內(nèi)存中的對象。不允許直接訪問堆內(nèi)存中的位置,因此我們不能直接操作對象的堆內(nèi)存空間。為了更好的搞懂變量對象與堆內(nèi)存,我們可以結(jié)合以下例子與圖解進(jìn)行理解。 showImg(https://segmentfault.com/img/remote/1460000009784102?w=1240&h=683); ...

    _Suqin 評論0 收藏0
  • 基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)及js數(shù)據(jù)存儲(chǔ)

    摘要:引用數(shù)據(jù)類型及堆內(nèi)存引用數(shù)據(jù)類型是保存在堆內(nèi)存中的對象,他的大小是不固定的。基礎(chǔ)數(shù)據(jù)類型在變量對象里可以直接對應(yīng)對應(yīng)的值,而引用數(shù)據(jù)類型是存儲(chǔ)在堆里的,在變量對象中對應(yīng)的是堆內(nèi)存的地址。因?yàn)槲覀冃薷谋举|(zhì)上是修改了堆內(nèi)存里的數(shù)據(jù)。 ? ??? ??因?yàn)橐郧扒岸碎_發(fā)跟數(shù)據(jù)存儲(chǔ)打交道比較少,javascript又具有自動(dòng)垃圾回收機(jī)制。數(shù)據(jù)結(jié)構(gòu)以及存儲(chǔ)相關(guān)的概念,其實(shí)是很容易被前端er忽略的。...

    Brenner 評論0 收藏0
  • 【連載】前端個(gè)人文章整理-從基礎(chǔ)到入門

    摘要:個(gè)人前端文章整理從最開始萌生寫文章的想法,到著手開始寫,再到現(xiàn)在已經(jīng)一年的時(shí)間了,由于工作比較忙,更新緩慢,后面還是會(huì)繼更新,現(xiàn)將已經(jīng)寫好的文章整理一個(gè)目錄,方便更多的小伙伴去學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個(gè)人前端文章整理 從最開始萌生寫文章的想法,到著手...

    madthumb 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<