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自我实现系列 点击查看