1、typeof
typeof是一个操作符而不是函数,用来检测给定变量的数据类型 常用于检测如下类型:
string,number,boolean,undefined,symbol
typeof原理:
不同的对象在底层都表明为二进制,在Javascript中二进制前(低)三位存储其类型信息。
- 000: 对象
- 010: 浮点数
- 100:字符串
- 110: 布尔
- 1: 整数
typeof null 为什么为object?
答:不同的对象在底层都表明为二进制,在Javascript中二进制前(低)三位都为0的话会被判断为Object类型,null的二进制表明全为0,自然前三位也是0,所以执行typeof时会返回”object”。
2、instanceof
判断引用数据类型
一个对象是否为某一个构造函数的实例;或者说判断一个实例是否属于某种类型
console.log({} instanceof Object) // true
// 也可以判断一个实例是否是其父类型或者祖先类型的实例
console.log([] instanceof Object) // true
console.log([] instanceof Array) // true
function Foo() {}
let f = new Foo()
console.log(f instanceof Foo) //true
instanceof的实现原理
function instanceof2(L, R) { //L是表达式左边,R是表达式右边
const O = R.prototype;
L = L.__proto__;
while(true) {
if (L === null)
return false;
if (L === O) // 这里重点:当 L 严格等于 0 时,返回 true
return true;
L = L.__proto__;
}
}
instanceof2([],Object) //true
3、Object.prototype.toString.call()
一般利用原型属性来判断数据类型
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END


















暂无评论内容