亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

視頻筆記,歡迎各種補充與糾錯0.0

1.類型檢測
1)typeof(基本類型檢測)
對所有基本類型的返回值
typeof?Number	//“Number”
typeof?String	//"string"
typeof?Boolean	//"boolean"
typeof?null	//"object"
typeof?undefined	//"undefined"
typeof?object	//"object"
對函數類型的返回值
typeof?function	//"function"

2)由于typeof只適用于判斷基本類型,對object,Date,Array進行檢測時只會統一返回“object”(很顯然這不是我們想要的,我們想知道它的具體類型),這時就要用到instanceof了,instanceof在檢測對象時會返回具體類型,如:
new?array()?instanceof?Array	//true
new?Date()?instanceof?Date	//true
...
如果想用instanceof去檢測基本類型只會統一返回false,另外由于instanceof是基于原型鏈的,所以有下列結果:
//定義父類
function?Parent(){}
//定義子類
function?Child(){}
//讓子類繼承父類
Child.prototype?=?new?Parent();
//此時再new一個子類實例,使用instanceof
new?Child()?instanceof?Child;	//true
new?Child()?instanceof?Parent	//true
通過原型鏈索引,new的是子類實例,子類繼承父類,所以子類實例既是子類類型又屬于父類類型
PS:instanceof在跨iframe或者window時由于存在多個window對象,所以在使用instanceof檢測時會返回false

3)object.prototype.toString
說實話-?-,這個沒用過,所以漲知識了
Object.prototype.toString.apply([])	//"[Object?Array]"
Object?.prototype.toString.apply(function(){});	//"[Object?function]"
Object?.prototype.toString.apply(null);	//"[Object?null]'
...
PS:ie6/7/8下存在兼容性問題,在檢測null時會返回object

4)constructor構造器
每個對象都有個constructor屬性,它指向該對象的構造函數類型,不過該屬性的值可以被改寫的,所以用它的判斷并不可靠

5)duck?type
百度了為啥叫“鴨子類型”,有這樣的話:“當看到一只鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那么這只鳥就可以被稱為鴨子。”
大概意思就是說當某個對象具備某種類型的特征或者行為時就可以被判斷為某種類型,不知道是不是“能力檢測”那種意思-?-


正在回答

3 回答

手動點贊

0 回復 有任何疑惑可以回復我~

typeof Number
"function"

0 回復 有任何疑惑可以回復我~

厲害 佩服

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
JavaScript深入淺出
  • 參與學習       281092    人
  • 解答問題       1054    個

由淺入深學習JS語言特性,且解析JS常見誤區,從入門到掌握

進入課程

視頻筆記,歡迎各種補充與糾錯0.0

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號