一、typeof判斷資料型別(判斷陣列跟物件都返回object)
console.log(typeofnull); //
"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...