因為無論是數組還是對象,對於typeof的操作返回值都為object,所以就有了區分數組類型和對象類型的需要:
#方一:透過length屬性:一般情況下物件沒有length屬性值,其值為undefiend,而陣列的length值為number類型
缺點:非常不實用,當對象的屬性存在length,且其值為number(例如類別數組),則方法失效,不建議使用,看看即可。
*方二:透過instanceof來判斷區分
#1.instanceof
var arr = [1, 2, 3];
var obj = {
name: 'lyl',
age: 18,
l: 'name'
}
console.log(arr instanceof Array); //true
console.log(obj instanceof Array) ; //false
2.constructor
#var arr = [1, 2, 3];
var obj = {
name: 'lyl',
age: 18,
1: 'name'
}
console.log(arr.constructor = == Array); //true
console.log(obj.constructor === Array); //false
3.Object.prototype.toString()
var arr = [1, 2, 3];
var obj = {
name: 'lyl',
age: 18,
1: 'name'
##}
console.log(Object.prototype.toString.call(arr) === '[object Array]'); / /true
console.log(Object.prototype.toString.call(boj) === '[object Array]'); //false
#4.陣列僅有的方法(如:sort,pop等)
var arr = [1, 2, 3];
var obj = {
name: 'lyl ',
age: 18,
1: 'name'
}
console.log(arr.sort === Array.prototype.sort); //true
console.log(obj.sort === Array.prototype.sort); //false
#
以上是JavaScript判斷變數是物件還是陣列的方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!