如何准確的判斷一個數據的類型


如何准確的判斷一個數據的類型(使用Object.prototype.toString.call())

1.typeof:只能判斷基本數據類型,不能判斷引用數據類型,判斷出來的都是Object
2.instanceof:只能進行類型的對比,不能進行類型的判斷
3.var arr = [];
console.log(Object.prototype.toString.call(arr));//輸出[object Array],是一個數組對象
4.var arr = [];
console.dir(arr);//輸出Array(0)
5.Object身上的toString方法與其他對象身上的toString方法不是一個方法,而是其他對象繼承Object原型以后改寫的toString方法:
var arr = [];
arr.toString()得到的是一個空字符串""
然而Object.prototype.toString.call(arr)輸出的是[object Array],說明他倆不是同一個方法
6.在Array.prototype.slice.call(arguments).slice(1)中,arguments本身沒有slice方法,所以需要借助call這個方法去借用slice方法。而call方法是用來改變this指向的,也就是說Array此時的指向arguments,所以arguments擁有了slice方法
7.instanceof
function Fn(){
    console.log(this instanceof Fn);
}
Fn();//結果為false(說明此時this不指向函數本身,即Fn。因為只是執行一個函數時,this指向window)
如果是new Fn();,則結果為true(說明此時this指向函數本身,即Fn。因為當new一個函數時,this會指向實例化對象,也就是Fn)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM