一、判斷乙個物件是否是陣列?
var obj1=
, obj2=[1
,2], obj3=
newdate()
;
1.判斷當前物件的原型物件是否是陣列的原型物件//1.使用__proto__獲得物件的原型物件
obj1.__proto__==array.prototype;
//false
obj2.__proto__==array.prototype;
//true
obj3.__proto__==array.prototype;
//false
//2.因為__proto__可能被瀏覽器禁用,所以可用object.getprototypeof()
object.
getprototypeof
(obj1)
==array.prototype;
//false
object.
getprototypeof
(obj2)
==array.prototype;
//true
object.
getprototypeof
(obj3)
==array.prototype;
//false
//3.更直接的函式father.isprototypeof(child)
array.prototype.
isprototypeof
(obj1)
;//false
array.prototype.
isprototypeof
(obj2)
;//true
array.prototype.
isprototypeof
(obj3)
;//false
2.判斷當前物件的建構函式是否是array//1.判斷原型物件中的constructor屬性(物件自己沒有,會去原型物件上查詢)
obj1.constructor==array;
//false
obj2.constructor==array;
//true
obj3.constructor==array;
//false
//2.用instanceof方法判斷物件是否是array的示例
obj1 instanceof array
;//false
obj2 instanceof array
;//false
obj3 instanceof array
;//false
但是上面這些方法有侷限性,如果手動修改了物件的原型物件,那麼這些方法就判斷不了了
3.使用object原型物件中的tostring()方法
//但是陣列和日期物件的原型物件中有自己的tostring方法,所以要用call方法
object.prototype.tostring.
call
(obj1)
;//[object object]
object.prototype.tostring.
call
(obj2)
;//[object array]
object.prototype.tostring.
call
(obj3)
;//[object date]
4.使用es5的isarray方法array.
isarray
(obj1)
;//false
array.
isarray
(obj2)
;//true
array.
isarray
(obj3)
;//false
判斷乙個物件是否是陣列
用typeof方法返回的陣列型別是object,無法確定是否是陣列,但可以通過下面方法判斷。var is array function value 說明 首先判斷這個值是否有值,並且不是undifined或null的值 其次判斷這個值的typeof運算的結果是否是object 第三判斷這個值的len...
判斷乙個物件是否為陣列
方法一 使用instanceof操作符。instanceof操作符用來判斷要檢測物件的原型鏈上是否存在某個建構函式的prototype屬性。var a var b console.log a instanceof object true console.log b instanceof object...
陣列的理解 並且 如何判斷乙個物件是否是陣列
這個問題看似簡單,實際上不簡單。var arr 1,2,3 這裡是字面量方法建立乙個陣列,相當於 var arr new array array是建構函式 類,arr.proto array.prototype,像push 方法,其實是array.prototype.push 所以說arr例項隨想能...