一、typeof
1、typeof是一个操作符而不是函数,用来检测给定变量的数据类型。
2、typeof原理: 不同的对象在底层都表示为二进制,在Javascript中二进制前(低)三位存储其类型信息。
3、typeof null 为"object", 原因是因为 不同的对象在底层都表示为二进制,在Javascript中二进制前(低)三位都为0的话会被判断为Object类型,null的二进制表示全为0,自然前三位也是0,所以执行typeof时会返回"object"。
一个不恰当的例子,假设所有的Javascript对象都是16位的,也就是有16个0或1组成的序列。
因为Array和null的前三位都是000。为什么Array的前三位不是100?因为二进制中的“前”一般代表低位, 比如二进制00000011对应十进制数是3,它的前三位是011。
二、instanceof
1、通俗些讲,instanceof 用来比较一个对象是否为某一个构造函数的实例。注意,instanceof运算符只能用于对象,不适用原始类型的值。
1)判断某个实例是否属于某种类型。
function Foo() {};
Foo.prototype.message = ...;
const a = new Foo();
2)也可以判断一个实例是否是其父类型或者祖先类型的实例。
function Car(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
}
const auto = new Car('Honda', 'Accord', 1998);
console.log(auto instanceof Car);
// expected output: true
console.log(auto instanceof Object);
// expected output: true
|
|