• <tbody id="9je1r"></tbody><tbody id="9je1r"><acronym id="9je1r"><rp id="9je1r"></rp></acronym></tbody>
      • <acronym id="9je1r"><acronym id="9je1r"><rp id="9je1r"></rp></acronym></acronym>

        亚洲无码Aⅴ,视频1页精品,欧美系列一区二区,曰韩色999

        JavaScript數(shù)據(jù)類型

        2020/10/27 10:12:57   閱讀:2423    發(fā)布者:2423

        1.1基本()類型

        • Number: 任意數(shù)值
        • String: 任意文本
        • Boolean: true/false
        • undefined: undefined
        • null: null
        • symbol(ECMAScript 6 新定義)
        • BigInt(ECMAScript 2020 新增)

        1.2對(duì)象(引用)類型

        • Object: 任意對(duì)象
        • Array: 特別的對(duì)象類型(下標(biāo)/內(nèi)部數(shù)據(jù)有序)
        • Function: 特別的對(duì)象類型(可執(zhí)行)

        二、數(shù)據(jù)類型判斷

        通常我們會(huì)使用四種方法來判斷JavaScript的類型,分別是:typeofinstanceofconstructortoString(),接下來我們分別來看這幾種方法使用以及區(qū)別

        2.1通過typeOf 判斷

        typeof是一個(gè)操作符,其右側(cè)跟一個(gè)一元表達(dá)式,并返回這個(gè)表達(dá)式的數(shù)據(jù)類型。返回的結(jié)果用該類型的字符串(全小寫字母)形式表示,包含這8種: numberbigIntbooleansymbolstringobjectundefinedfunction

        引用類型,除了function返回function類型外,其他均返回object,其中,null 有屬于自己的數(shù)據(jù)類型 Null , 引用類型中的 數(shù)組、日期、正則 也都有屬于自己的具體類型,而 typeof 對(duì)于這些類型的處理,只返回了處于其原型鏈最頂端的 Object 類型


        作者:撒點(diǎn)料兒
        鏈接:https://juejin.im/post/6865211899303165959
        來源:掘金
        著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

        2.2通過instanceof 判斷

        instanceof用來判斷A是否為B的實(shí)例,表達(dá)式為:A instanceof B,如果AB的實(shí)例,則返回true,否則返回falseinstanceof檢測的是原型,內(nèi)部機(jī)制是通過判斷對(duì)象的原型鏈中是否有類型的原型。

        另外一種情況下,obj instanceof A 原表達(dá)式的值也會(huì)改變,就是改變對(duì)象 obj 的原型鏈的情況,雖然在目前的ES規(guī)范中,我們只能讀取對(duì)象的原型而不能改變它,但借助于非標(biāo)準(zhǔn)的 proto 偽屬性,是可以實(shí)現(xiàn)的。比如執(zhí)行 obj.proto = {} 之后,obj instanceof A就會(huì)返回 false ,但它不能檢測 null undefined

        由上圖可以看出[]的原型指向Array.prototype,間接指向Object.prototype, 因此 [] instanceof Array 返回true [] instanceof Object 也返回true

        instanceof 只能用來判斷兩個(gè)對(duì)象是否屬于實(shí)例關(guān)系, 而不能判斷一個(gè)對(duì)象實(shí)例具體屬于哪種類型。

        2.3 通過constructor 判斷

        constructor是原型prototype的一個(gè)屬性,當(dāng)函數(shù)被定義時(shí)候,js引擎會(huì)為函數(shù)添加原型prototype,并且這個(gè)prototypeconstructor屬性指向函數(shù)引用, 因此重寫prototype會(huì)丟失原來的constructor。 從原型鏈角度講,構(gòu)造函數(shù)就是新對(duì)象的類型。這樣做的意義是,讓對(duì)象誕生以后,就具有可追溯的數(shù)據(jù)類型

        2.4 通過 toString() 判斷

        toString()Object的原型方法,調(diào)用該方法,默認(rèn)返回當(dāng)前對(duì)象的[[Class]]。這是一個(gè)內(nèi)部屬性,其格式為[object Xxx],其中Xxx就是對(duì)象的類型。

        對(duì)于Object對(duì)象,直接調(diào)用toString()就能返回[object Object],而對(duì)于其他對(duì)象,則需要通過callapply來調(diào)用才能返回正確的類型信息。

        這是因?yàn)?span>toString為Object的原型方法,而Array Function等類型作為Object的實(shí)例,都重寫了toString方法。不同的對(duì)象類型調(diào)用toString方法時(shí),根據(jù)原型鏈的知識(shí),調(diào)用的是對(duì)應(yīng)的重寫之后的toString方法(Function類型返回內(nèi)容為函數(shù)體的字符串,Array類型返回元素組成的字符串.....),而不會(huì)去調(diào)用Object上原型toString方法(返回對(duì)象的具體類型),所以采用obj.toString()不能得到其對(duì)象類型,只能將obj轉(zhuǎn)換為字符串類型;因此,在想要得到對(duì)象的具體類型時(shí),應(yīng)該調(diào)用Object上原型toString方法。

        鏈接:https://juejin.im/post/6865211899303165959

        亚洲无码Aⅴ,视频1页精品,欧美系列一区二区,曰韩色999
            • <tbody id="9je1r"></tbody><tbody id="9je1r"><acronym id="9je1r"><rp id="9je1r"></rp></acronym></tbody>
            • <acronym id="9je1r"><acronym id="9je1r"><rp id="9je1r"></rp></acronym></acronym>
              安远县| 鄂托克前旗| 辽源市| 探索| 霍邱县| 中西区| 长寿区| 济宁市| 宜兰市| 西青区| 莎车县| 雷州市| 西宁市| 沧州市| 贵港市| 内乡县| 荔浦县| 尉氏县| 三穗县| 安岳县| 衡南县| 麻江县| 漾濞| 南丰县| 巴林左旗| 恩施市| 闽清县| 玛曲县| 高要市| 清水河县| 玛多县| 河东区| 蓬安县| 东至县| 澎湖县| 新乡市| 汉川市| 普兰店市| 克拉玛依市| 五大连池市| 宁都县|