判斷變數的型別是最經常使用的方法,但是判斷的方式有很多。
1.typeof
var ary = [1,2,3,4];
console.log(typeof ary); // 輸出『object』
很明顯,typeof只能檢測基本資料型別,並不能檢測出來是否為陣列。
2.instanceof
var ary = [1,2,3,4];
console.log(ary instanceof array); //輸出true
看起來挺好使的,實際上也確實挺好使的,但是要求變數必須在當前頁面宣告。
3.原型鏈
var ary = [1,2,3,4];
console.log(ary.__proto__.constructor==array); //輸出true
console.log(ary.constructor==array) //輸出true
兩種方法都一樣,但是在ie中「_proto_」沒有定義。這種方法也存在和「instanceof」一樣的問題,必須先宣告變數。
4.完美方法
var arr = [1,2,3,4];
console.log(object.prototype.tostring.call(arr)) //輸出"[object array]"
為了使用簡便,我們可以封裝成乙個函式。
var ary = [1,2,3,4];
function isarray(o)
console.log(isarray(ary));
當然,這種方法不僅僅可以用來判斷是否為陣列,其他的也同樣適用。
console.log(object.prototype.tostring.call(123)) //[object number]
console.log(object.prototype.tostring.call('123')) //[object string]
console.log(object.prototype.tostring.call(undefined)) //[object undefined]
console.log(object.prototype.tostring.call(true)) //[object boolean]
console.log(object.prototype.tostring.call({})) //[object object]
console.log(object.prototype.tostring.call()) //[object array]
console.log(object.prototype.tostring.call(function(){})) //[object function]
是不是看起來既高大上,有特別好用呢!!!
js判斷變數型別是否為陣列
判斷變數的型別是最經常使用的方法,但是判斷的方式有很多。1.typeof var ary 1,2,3,4 console.log typeof ary 輸出 object 很明顯,typeof只能檢測基本資料型別,並不能檢測出來是否為陣列。2.instanceof var ary 1,2,3,4 c...
js判斷變數的型別為陣列型別
js的陣列是無型別的 陣列元素可以是任意型別,並且同乙個陣列中的不同元素也可能有不同的型別。陣列的元素可以是物件或其他陣列,這樣就可以建立複雜的資料結構。通常我們可以用一元運算子typeof來判斷js的資料型別,但是對於陣列這樣乙個特殊的物件卻只能返回 object typeof可以解決大部分的資料...
js判斷是否為陣列
var array 1,2,3 console.log array instanceof array 父子頁面陣列賦值,可能無效 console.log array.constructor array 父子頁面陣列賦值,可能無效 console.log array.proto constructor...