typeof 返回資料型別
表示式返回值
typeof undefined
'undefined'
typeof null
'object'
typeof true
'boolean'
typeof 123
'number'
typeof "abc"
'string'
typeof function() {}
'function'
typeof {}
'object'
typeof
'object'
typeof unknownvariable
'undefined'
var
o = ;
var
a = [
'reg'
,
'blue'
];
我們用typeof 列印出來的都是object。這說明物件和陣列都是屬於object根本沒辦法區分。
var
o = ;
var
a = [
'reg'
,
'blue'
];
alert( a
instanceof
array );
// true
alert( o
instanceof
array );
// false
大部分瀏覽器內建array內部實現了isarray判斷陣列的方法var
o = ;
var
a = [
'reg'
,
'blue'
];
alert( a.constructor===
array );
// true
alert( o.constructor===
array );
// false
少數低版本瀏覽器沒有,比如ie8及以下版本
var arr = [1,2,3];(這個方法會獲取物件內部的屬性[[class]],然後返回你乙個字串console.log(array.isarray(arr));//true
利用頂級原型的屬性,再利用call,可以達到我們檢測陣列的目的)
var arr = [1,2,3];所以要是不考慮相容問題的話,array.isarray可以檢測陣列沒問題console.log(object.prototype.tostring.call(arr) === '[object array]');//true
object.prototype.tostring是最無懈可擊的方法
instanceof和constructor的缺點 就是在多視窗和多框架的web頁面中相容不好
我們來封裝乙個完美的函式用來檢驗是否是陣列。呼叫myisarray(陣列名)
function myisarray(value)else
}
判斷陣列的方法 JS有哪些判斷是否是陣列的方法?
參考 js判斷是否是陣列的四種做法 1 instanceoflet a a instanceof array trueinstanceof運算子檢測array.prototype屬性是否存在於變數a的原型鏈上.存在問題 prototype屬性是可以修改的,所以並不是最初判斷為true就一定永遠為真 ...
如何判斷是否是陣列
typeof 只能返回object eg a 1,2,3 js提供的方法 a array.isarray a 從建構函式入手 b a instanceof array 從原型入手 c array.prototype.isprototypeof a 根據物件的class 屬性 類屬性 跨原型鏈呼叫to...
判斷是否是陣列的幾種方法
判斷objectname是否是陣列 基本資料型別也可以使用此方法。123 constructor number true1 2判斷有誤差。a 在不同 iframe 中建立的 array 並不共享 prototype b 即使為true,也有可能不是陣列。function subarray subar...