vue 如何判斷變數是陣列還是物件

2022-09-06 01:54:14 字數 3311 閱讀 7796

一、typeof判斷資料型別(判斷陣列跟物件都返回object)

console.log(typeof

null); //

"object"

console.log(typeof

function

() );

//"function"

console.log(typeof '夢龍小站'); //

"string"

console.log(typeof 1); //

"number"

console.log(typeof a); //

"undefined"

console.log(typeof undefined); //

"undefined"

console.log(typeof ); //

"object"

console.log(typeof nan); //

"number"

console.log(typeof {}); //

"object"

二、instanceof判斷物件的原型鏈是否是指向建構函式的prototype

var arr = [1,2,3,1];

console.log(arr

instanceof array)//

true

三、物件的constructor屬性

var arr = [1,2,3,1];

console.log(arr.constructor === array)//

true

四、object.prototype.tostring.call(arr)

利用物件的tostring可以準確判斷是什麼型別,call()改變this指向,這裡是借用object的方法,然後有人可能會問為什麼不直接用arr.tostring而要借用object的方法,

我們看下面

console.log(object.prototype.tostring.call("jerry"));//

[object string]

console.log(object.prototype.tostring.call(12));//

[object number]

console.log(object.prototype.tostring.call(true));//

[object boolean]

console.log(object.prototype.tostring.call(undefined));//

[object undefined]

console.log(object.prototype.tostring.call(null));//

[object null]

console.log(object.prototype.tostring.call());//

[object object]

console.log(object.prototype.tostring.call(function(){}));//

[object function]

console.log(object.prototype.tostring.call());//

[object array]

console.log(object.prototype.tostring.call(new date));//

[object date]

console.log(object.prototype.tostring.call(/\d/));//

[object regexp]

console.log(object.prototype.tostring.call(new person));//

[object object]

直接用tostring

console.log("jerry".tostring());//

jerry

console.log((1).tostring());//

1console.log([1,2].tostring());//

1,2console.log(new date().tostring());//

wed dec 21 2016 20:35:48 gmt+0800 (中國標準時間)

console.log(function(){}.tostring());//

function (){}

console.log(null.tostring());//

error

console.log(undefined.tostring());//

error

因為tostring為object原型上的方法,而array、function都是object的例項,例項重新改寫了原型上的tostring方法,不同的物件呼叫tostring方法,呼叫的是改寫之後的方法

**成各種型別的字串),而不會呼叫object原型上的tostring()方法,因此直接呼叫不能判斷物件型別

var arr=[1,2,3];

console.log(array.prototype.hasownproperty("tostring"));//

true

console.log(arr.tostring());//

1,2,3

delete array.prototype.tostring;//

delete操作符可以刪除例項屬性

console.log(array.prototype.hasownproperty("tostring"));//

false

console.log(arr.tostring());//

"[object array]"

我們可以看到,刪除例項上的tostring方法後呼叫的是object原型上的tostring()方法,返回物件型別

五、es6的方法——array.isarray()

array.isarray() //

true

六、看好多部落格說用length判斷,這個其實不準確

var obj=

var arr =

console.log(obj.length)

//undefined

console.log(arr.length)//

0obj.length = 1console.log(obj.length)

//1

物件可以直接新增length這個屬性,就無法區分了

JUQERY判斷變數是陣列還是物件

isarray isplainobject 用途 我們通常用typeof 來判斷乙個變數的型別,但是這個變數是陣列或是物件,在jquery裡都會返回乙個object型別 所以我們需要知道它倒底是乙個陣列還是乙個物件,其實都可以。就用上述命令判斷,就可以知道 function var arr cons...

如何判斷陣列是靜態還是動態分配的

include include define smaller a,b a b b a define min a,b,c smaller smaller a,b c define abs x x 0 x x void test int p if s u else if s v else int a 1...

判斷是空物件還是空陣列

方法一 利用josn.stringify if json.stringify res.data else方法二objeck.keys objeck.keys 方法會返回乙個由給定物件的自身可列舉屬性組成的陣列,陣列中屬性名的排列順序和使用 for in 迴圈遍歷該物件時返回的順序一致,該方法屬於 e...