<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        談談我對JavaScript中typeof和instanceof的深入理解_javascript技巧

        來源:懂視網 責編:小采 時間:2020-11-27 21:47:52
        文檔

        談談我對JavaScript中typeof和instanceof的深入理解_javascript技巧

        談談我對JavaScript中typeof和instanceof的深入理解_javascript技巧:這次主要說說javascript的類型判斷函數typeof和判斷構造函數原型instanceof的用法和注意的地方。 typeof 先來說說typeof吧。首先需要注意的是,typeof方法返回一個字符串,來表示數據的類型。 typeof 是一個一元運算,放在一個運算數之前,運算數可以是任意
        推薦度:
        導讀談談我對JavaScript中typeof和instanceof的深入理解_javascript技巧:這次主要說說javascript的類型判斷函數typeof和判斷構造函數原型instanceof的用法和注意的地方。 typeof 先來說說typeof吧。首先需要注意的是,typeof方法返回一個字符串,來表示數據的類型。 typeof 是一個一元運算,放在一個運算數之前,運算數可以是任意
        這次主要說說javascript的類型判斷函數typeof和判斷構造函數原型instanceof的用法和注意的地方。

        typeof

        先來說說typeof吧。首先需要注意的是,typeof方法返回一個字符串,來表示數據的類型。

        typeof 是一個一元運算,放在一個運算數之前,運算數可以是任意類型。

        它返回值是一個字符串,該字符串說明運算數的類型。typeof 一般只能返回如下幾個結果:
        number,boolean,string,function,object,undefined。我們可以使用 typeof 來獲取一個變量是否存在,如 if(typeof a!="undefined"){alert("ok")},而不要去使用 if(a) 因為如果 a 不存在(未聲明)則會出錯,對于 Array,Null 等特殊對象使用 typeof 一律返回 object,這正是 typeof 的局限性。

        語法講解

        我們先看看各個數據類型對應typeof的值:

        數據類型 Type
        Undefined “undefined”
        Null “object”
        布爾值 “boolean”
        數值 “number”
        字符串 “string”
        Symbol (ECMAScript 6 新增) “symbol”
        宿主對象(JS環境提供的,比如瀏覽器) Implementation-dependent
        函數對象 “function”
        任何其他對象 “object”

        再看看具體的實例:

        我們會發現一個問題,就是typeof來判斷數據類型其實并不準確。比如數組、正則、日期、對象的typeof返回值都是object,這就會造成一些誤差。

        所以在typeof判斷類型的基礎上,我們還需要利用Object.prototype.toString方法來進一步判斷數據類型。

        我們來看看在相同數據類型的情況下,toString方法和typeof方法返回值的區別:

        數據 toString typeof
        “foo” String string
        new String(“foo”) String object
        new Number(1.2) Number object
        true Boolean boolean
        new Boolean(true) Boolean object
        new Date() Date object
        new Error() Error object
        new Array(1, 2, 3) Array object
        /abc/g RegExp object
        new RegExp(“meow”) RegExp object

        可以看到利用toString方法可以正確區分出Array、Error、RegExp、Date等類型。

        所以我們一般通過該方法來進行數據類型的驗證

        真題檢測

        但是既然今天說到了typeof,那這里就列出幾道題目,來看看自己是否真正掌握了typeof的用法。

        第一題:

        第二題:

        第三題:

        第四題:

        第五題:

        第六題:

        第七題:

        下面公布答案了,這七題的答案分別是:

        "undefined","number","undefined","undefined","number","1undefined","undefined"

        做對了幾道呢?是不是很大的困惑呢?這幾題雖然都有typeof,但是考察了很多javascript的基礎噢。下面我們來一一詳解。

        第一題:

        表達式是從右往左的,x由于變量提升,類型不是null,而是undefined,所以x=y=”undefined”。

        變量提升我在這篇文章中提到過,可以看看。

        第二題:

        傳入的參數為f也就是function(){ return 1; }這個函數。通過f()執行后,得到結果1,所以typeof 1返回”number”。這道題很簡單,主要是區分f和f()。

        第三題:

        這一題考察的是this的指向。this永遠指向函數執行時的上下文,而不是定義時的(ES6的箭頭函數不算)。當arguments執行時,this已經指向了window對象。所以是”undefined”。對this執行不熟悉的同學可以看看這篇文章:深入理解this,對剛剛提到的箭頭函數感興趣的同學可以看看初步探究ES6之箭頭函數。

        第四題:

        如果上面那一題做對了,那么這一題也應該不會錯,同樣是this的指向問題。

        第五題:

        這一題比較容易錯,因為我在遇到這道題之前也從來沒有遇到過javascript的分組選擇符。什么叫做分組選擇符呢?舉一個例子就會明白了:

        所以上面的題目會返回2,typeof 2當然是”number”啦。

        第六題:

        這是一個javascript語言規范上的問題,在條件判斷中加入函數聲明。這個聲明語句本身沒有錯,也會返回true,但是javascript引擎在搜索的時候卻找不到該函數。所以結果為”1undefined”。

        第七題:

        這題其實是一個考察心細程度的題目。形參的foo指向的是{ foo: { bar: 1 } }這個整體。相信這么說就明白了。

        好啦。上面的題目都是很好的資源噢。

        instanceof

        接下來該說說instanceof方法了。instanceof運算符可以用來判斷某個構造函數的prototype屬性是否存在于另外一個要檢測對象的原型鏈上。

        instanceof 用于判斷一個變量是否某個對象的實例,如 var a=new Array();alert(a instanceof Array); 會返回 true,同時 alert(a instanceof Object) 也會返回 true;這是因為 Array 是 object 的子類。再如:function test(){};var a=new test();alert(a instanceof test) 會返回

        談到 instanceof 我們要多插入一個問題,就是 function 的 arguments,我們大家也許都認為 arguments 是一個 Array,但如果使用 instaceof 去測試會發現 arguments 不是一個 Array 對象,盡管看起來很像。

        如果對原型不太了解,可以看看深入理解原型。

        下面我們看看instanceof的實例:

        但是這里我們需要注意一個問題:

        第一個為什么返回false呢?因為構造函數的原型被覆蓋了,我們可以看看new f和new g的區別:

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        談談我對JavaScript中typeof和instanceof的深入理解_javascript技巧

        談談我對JavaScript中typeof和instanceof的深入理解_javascript技巧:這次主要說說javascript的類型判斷函數typeof和判斷構造函數原型instanceof的用法和注意的地方。 typeof 先來說說typeof吧。首先需要注意的是,typeof方法返回一個字符串,來表示數據的類型。 typeof 是一個一元運算,放在一個運算數之前,運算數可以是任意
        推薦度:
        標簽: javascript of typeof
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲天堂免费在线| 亚洲特级aaaaaa毛片| 亚洲欧美在线x视频| 黄色片在线免费观看| 亚洲人成免费电影| 免费阿v网站在线观看g| 亚洲中文无码线在线观看| 在线成人爽a毛片免费软件| 亚洲午夜电影在线观看高清 | 亚洲中文字幕精品久久| 五月婷婷综合免费| 亚洲一区二区三区国产精华液| 妞干网免费视频观看| 精品韩国亚洲av无码不卡区| 亚洲免费日韩无码系列| 男人天堂免费视频| 亚洲综合久久综合激情久久| 成人免费福利视频| 亚洲国产成人无码AV在线| 亚洲黄黄黄网站在线观看| 久草免费福利视频| 亚洲熟妇色自偷自拍另类| 国产青草视频免费观看97| 窝窝影视午夜看片免费| 亚洲国产精品无码AAA片| 成年黄网站色大免费全看| 亚洲日韩乱码中文字幕| 免费国产人做人视频在线观看| 国产精品无码免费播放| 日韩精品亚洲专区在线影视| 亚洲午夜久久久影院| 免费在线观看h片| 爱情岛亚洲论坛在线观看 | 亚洲免费日韩无码系列 | 久久国产乱子伦精品免费不卡| 亚洲码一区二区三区| 情侣视频精品免费的国产| 久久国产乱子免费精品| 亚洲av无码专区在线电影天堂| 亚洲色无码专区在线观看| 噼里啪啦电影在线观看免费高清 |