判斷一個對象是不是數組


var arr=[1,2,3]; //Array.prototype

var obj={}; //Object.prototype

var fun=function(){}; //Function.prototype

/*typeof無法區分普通對象和數組*/

    console.log(typeof arr); //object 判斷失敗

1./*isPrototypeOf():判斷數組類型的原型是不是arr的父級對象*/

if(Array.prototype.isPrototypeOf(arr)){

console.log("arr是數組");

}

2./*instanceof判斷arr是否由數組類型創建出來*/

if(arr instanceof Array){

console.log("arr是數組");

}

3./*getPrototypeOf:判斷arr的父級對象是不是數組類型的原型*/

if(Object.getPrototypeOf(arr)==Array.prototype){

console.log("arr是數組");

}

4./*調用Object的原型中的原生toString輸出對象的類型名*/

console.log(Object.prototype.toString.call(arr));

在toString方法被調用時,會執行下面的操作步驟:

1 如果this的值為undefined,則返回"[object Undefined]".
2 如果this的值為null,則返回"[object Null]".
3 讓O成為調用ToObject(this)的結果.
4 讓class成為O的內部屬性[[Class]]的值.
5 返回三個字符串"[object ", class, 以及 "]"連接后的新字符串.

最后的最后提醒大家,Object.prototype.toString().call(param)返回的[object class]中class首字母是大寫,像JSON這種甚至都是大寫,所以,大家判斷的時候可以都轉換成小寫,以防出錯,Object.prototype.toString().call(param).toLowerCase()即可。

constructor 屬性。 JavaScript中,每個對象都有一個constructor屬性,它引用了初始化該對象的構造函數,常用於判斷未知對象的類型。如給定一個求知的值 通過typeof運算符來判斷它是原始的值還是對象。如果是對象,就可以使用constructor屬性來判斷其類型。

5.if(typeof arr=="object"&&arr.constructor==Array){

console.log("是數組";)//注意:typeof返回字符串,所以是“object”  constructor返回構造器

}


免責聲明!

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



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