判斷乙個物件是不是陣列型別,最全方法

2021-10-02 09:27:11 字數 2551 閱讀 8865

判斷乙個物件是不是陣列型別,可以分為判斷原型物件,判斷建構函式和判斷內部class屬性三大類,下面**是所有方法。

// 判斷乙個物件是不是陣列型別

var a =10,

b ='hello'

, c =

true

, d =

null

, e = undefined;

varf

=function()

;var obj1 =

, obj2 =[0

,1,2

],obj3 =

newdate()

; console.

log(

typeof

(a),

typeof

(b),

typeof

(c),

typeof

(d),

typeof

(e),

typeof

(f),

typeof

(obj1)

,typeof

(obj2)

,typeof

(obj3),)

// 改變obj1的原型物件,改變後判斷原型物件和判斷建構函式方法不再準確

obj1.__proto__ = array.prototype;

// 判斷原型物件

// 1. __proto__獲取原型物件,再和陣列的原型物件比較。例項物件的__proto__屬性指向原型物件。

console.

log(

obj1.__proto__ == array.prototype,

obj2.__proto__ == array.prototype,

obj3.__proto__ == array.prototype

)// 2.object.getprototypeof()函式等效於__proto__屬性。返回指定物件的的原型物件

console.

log(

object.

getprototypeof

(obj1)

== array.prototype,

object.

getprototypeof

(obj2)

== array.prototype,

object.

getprototypeof

(obj3)

== array.prototype

)// 3.object.prototype.isprototypeof() 檢查乙個物件是否存在於另乙個物件的原型鏈中。

console.

log(

array.prototype.

isprototypeof

(obj1)

, array.prototype.

isprototypeof

(obj2)

, array.prototype.

isprototypeof

(obj3)

)// 判斷建構函式

// 4.用父級原型物件中的constructor屬性

console.

log(

obj1.constructor == array,

obj2.constructor == array,

obj3.constructor == array

)// 5.instanceof 運算子用於檢測建構函式的 prototype 屬性是否出現在某個例項物件的原型鏈上。 語法:object instanceof constructor

console.

log(

obj1 instanceof

array

, obj2 instanceof

array

, obj3 instanceof

array

)// 利用頂級父物件的tostring()方法判斷 最準確

// 6.object.prototype.tostring.call()

console.

log(

object.prototype.tostring.

call

(obj1)

, object.prototype.tostring.

call

(obj2)

, object.prototype.tostring.

call

(obj3)

)// 7.es5 array.isarray() 等效方法6

console.

log(

array.

isarray

(obj1)

, array.

isarray

(obj2)

, array.

isarray

(obj3)

)

判斷乙個物件是不是陣列的方法

判斷乙個物件是不是陣列的方法 1 typeof 無法判斷 只能判斷原始型別的值和函式 2 isprototypeof 判斷父及物件 可檢查整個原型鏈 可能繼承自陣列 console.log array.prototype.isprototypeof 是陣列 不是陣列 console.log arra...

判斷乙個物件是不是陣列的方法

判斷乙個物件是不是陣列 幾種辦法 typeof無法區分物件和陣列 typeof object typeof object 1.var obj var obj var obj function obj instanceof 建構函式名 型別名 array,function,2.array.protot...

怎麼判斷乙個js物件是不是Array型別?

對於function string,number,undefined等幾種資料型別的物件來說,typeof完全可以判斷出來,但是為array的時候 var arr newarray 1 2 3 4 alert typeof arr object你會收到乙個object的答案,有點讓人失望。insta...