typeofinstanceofconstructorobject.prototype.tostring.call()jquery.type()
1.typeof:判斷基本資料型別的,當變數是:number, string, boolean, function, undefined, object型別時,可以使用typeof進行判斷。當變數是arr, json, null, date, reg, error 型別時全部被錯誤的檢測為object型別。使用它會返回乙個字串
2. instanceof:是判斷引用資料型別的。返回乙個布林值,表示物件是否為某個建構函式的例項。它不能檢測null 和 undefined
注意:(instanceof 不是乙個函式,是乙個操作符)
舉例:判斷a是否為b的例項,a instanceof b, 返回 boolean 值。
functionb(
)vara=
newb()
console.
log(
ainstanceofb)
//返回true
//基本資料型別
console.
log(
"1"instanceof
string);
//false
console.
log(
1instanceof
number);
//false
console.
log(
true
instanceof
boolean);
//false
//引用資料型別
console.
log(
instanceof
array);
//true
console.
log(
function()
instanceof
function);
//true
console.
log(
instanceof
object);
//true
3.constructor:除了undefined和null,其它變數都能使用constructor判斷型別。
console.
log(
("1"
).constructor === string)
;//true
console.
log((1
).constructor === number)
;//true
console.
log(
(true
).constructor === boolean)
;//true
console.
log(([
]).constructor === array)
;//true
console.
log(
(function()
).constructor === function)
;//true
console.
log(()
.constructor === object)
;//true
console.
log(
(null
).constructor === null)
;//報錯
console.
log(
(undefined)
.constructor === undefined)
;//報錯
宣告了乙個建構函式,並且把他的原型指向了array的原型。這時constructor也是不行的
舉個例子:
functionfn(
);fn.prototype=
newarray()
;var f=
newfn()
;console.
log(f.constructor===fn)
;//false
console.
log(f.constructor===array)
;//true
原因:1、array屬於引用型資料,在傳遞過程中,僅僅是引用位址的傳遞。2、每個頁面的array原生物件所引用的位址是不一樣的,在子頁面宣告的array,所對應的建構函式,是子頁面的array物件;父頁面來進行判斷,使用的array並不等於子頁面的array;切記,不然很難跟蹤問題!
4.object.prototype.tostring.call(),什麼資料型別都可以判斷
console.
log(object.prototype.tostring.
call(1
));//[object number]
console.
log(object.prototype.tostring.
call
("1"))
;//[object string]
console.
log(object.prototype.tostring.
call
(true))
;//[object boolean]
console.
log(object.prototype.tostring.
call([
]));
//[object array]
console.
log(object.prototype.tostring.
call
(function()
));//[object function]
console.
log(object.prototype.tostring.
call()
);//[object object]
console.
log(object.prototype.tostring.
call
(null))
;//[object null]
console.
log(object.prototype.tostring.
call
(undefined));
//[object undefined]
5.jquery.type(),萬能的方法,如果物件是undefined或null,則返回相應的「undefined」或「null」。
jquery.
type
( undefined )
==="undefined"
jquery.
type()
==="undefined"
jquery.
type
( window.notdefined )
==="undefined"
jquery.
type
(null
)===
"null"
如果物件有乙個內部的[
[class]
]和乙個瀏覽器的內建物件的 [
[class]
] 相同,我們返回相應的 [
[class]
]名字。
(有關此技術的更多細節。 )
jquery.
type
(true
)===
"boolean"
jquery.
type(3
)===
"number"
jquery.
type
("test"
)===
"string"
jquery.
type
(function()
)===
"function"
jquery.
type([
])==="array"
jquery.
type
(new
date()
)===
"date"
jquery.
type
(new
error()
)===
"error"
// as of jquery 1.9
jquery.
type
(/test/
)===
"regexp"
其他一切都將返回它的型別「object」
js判斷資料型別
1 typeof 形如 var x xx typeof x string 返回型別有 undefined string number boolean function object 缺點 對於object型別不能細分是什麼型別 優點 對空null的判斷 undefined 的應用 2 instanc...
js判斷資料型別
了解js的都知道,有個typeof 用來判斷各種資料型別,有兩種寫法 typeof typeof 如下例項 typeof 2 輸出 number typeof null 輸出 object typeof 輸出 object typeof 輸出 object typeof function 輸出 fu...
js判斷資料型別
1 判斷是否為陣列型別 2 判斷是否為字串型別 3 判斷是否為數值型別 isnan 變數 如果為true就是數字型別 注意這個函式一般針對數字型別來判斷是否值為nan,若變數為非數字型別,則先轉化為數字型別再做判斷,用此函式時,別忘考慮空串和空格 這倆轉化為數字是0 4 判斷是否為日期型別 5 判斷...