typeofjavascript
instanceofjava
Object.prototype.toStringgit
使用:github
console.log(typeof 1024) // "number"
特殊狀況:prototype
// js自身的bug console.log(typeof null) // "object"
侷限:code
// 不能明確是object類型的具體類型 console.log(typeof {}) // "object" console.log(typeof []) // "object"
使用建議:遊戲
最好用typeof判斷基本類型ip
使用:原型鏈
var arr = [] console.log(arr instanceof Array) // true var now = new Date() console.log(now instanceof Date) // true
使用建議:get
用來判斷一個實例是不是其父類型或祖先類型的實例
能夠結合typeof判斷數據的具體類型
自我實現:
/* * instanceof的工做原理,就是判斷 * 右邊變量的prototype是否在左邊變量的原型鏈上。 * * 假如把prototype當作一個區域, * instanceof的工做原理,就是判斷 * 左邊變量是否能夠到達右邊變量所屬的這個區域。 * * 因此,咱們就能解鎖隱藏在instanceof裏面的彩蛋: * 一個男孩找女孩的遊戲。 */ function canBoyFind(boy, girl) { // girlRoom就是女孩的閨房 var girlRoom = girl.prototype // room就是男孩如今所在的房間 var room = boy.__proto__ while (true){ // 重複如下規則: // 1. 男孩一臉懵逼————本身居然在馬路上。遊戲直接結束! if (room === null){ return false } // 2. 男孩就在女孩閨房,恭喜這對新人! if (room === girlRoom){ return true } // 3. 男孩既不在馬路上,也不在女孩閨房裏。 // 可是,這裏有一把鑰匙(__proto__),能夠通往下一個房間。 // 男孩走進下一個房間... room = room.__proto__ } }
使用:
Object.prototype.toString.call(1) // "[object Number]" Object.prototype.toString.call({}) // "[object Object]" Object.prototype.toString.call([]) // "[object Array]" Object.prototype.toString.call(null) // "[object Null]"
使用建議:
這麼好用,我先記下了
JavaScript自我實現系列 點擊查看