數據類型檢測方法總結typeof OR call(修改this指向)

使用typeof方法檢測數據類型

方法不嚴謹,在檢測數組和對象是都是object 類型的

// 使用typeof檢測數據類型
    console.log(typeof (123)); //number
    console.log(typeof ("123")); //string
    console.log(typeof (true)); //boolean
    console.log(typeof ([])); //object
    console.log(typeof ({})); //object
    console.log(typeof (null)); //object 
    console.log(typeof (function(){})); //function 
    console.log(typeof (undefined)); //undefined 

萬能的數據類型檢測方式

這里由一個思考問題代入這個知識點
思考題:數組調用toString結果和對象調用toString結果為什么不一樣

  //1.思考題:數組調用toString結果和對象調用toString結果為什么不一樣
        //原因:Object原型中有toString,Array原型中也有toString
        //根據變量訪問原型鏈成員規(guī)則:如果是數組調用toString訪問時Array原型中的toString
        /* 
        Array.prototype.toString(): 底層調用數組join()
        Object.prototype.toString(): 返回固定的字符串 [object 數據類型]
         */
         console.log([1,2,3].toString());//1,2,3  [1,2,3].join()
         console.log({name:'張三'}.toString());//[object Object]
        console.log([]);
        console.log([].toString());//''
        console.log({}.toString());//[object Object]
        

        //2.萬能數據類型檢測法
        /*原理:既然Object.prototype.toString() 會返回一個固定格式的數據類型字符串,
        只需要通過call修改this指向,就可以檢測所有的數據類型 */

        //typeof關鍵字檢測null和array都會得到object,無法檢測
        console.log(Object.prototype.toString.call('123'));//[object String]
        console.log(Object.prototype.toString.call(123));//[object Number]
        console.log(Object.prototype.toString.call(true));//[object Boolean]
        console.log(Object.prototype.toString.call(undefined));//[object Undefined]
        console.log(Object.prototype.toString.call(null));//[object Null]
        console.log(Object.prototype.toString.call(function(){}));//[object Function]
        console.log(Object.prototype.toString.call([]));//[object Array]
        console.log(Object.prototype.toString.call({}));//[object Object]
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容