js数据类型转换
typeof
typeof的使用规则是typeof()括号里面添加值就行,能输出对应的类型,但是null只能输出为object(因为null的机器码都是0而判断对象是用后三位机器码,而对象的机器码后三位也是0)因此不能用来判断null,对于引用类型也只能输出Object,如果是Arry和Function则输出Function是因为在Object这个对象下面有一个内置属性call,当检测到是Object的内置方法时就会输出function
instanceof
这个方法时利用了原型链的思想,输出的是布尔值,不能判断一个数是否是null类型,引用对象类型输出也是Object类型的,具体源码实现看下方。而且在这个方法下null不等于Object
function myinstanceof(left,right){
let Lproto = left.__proto__;//
let Rproto = right.prototype;//
while(true){
if(!Lproto) return false;//
if(Lproto === Rproto) return true;//
Lproto = Lproto.__proto__;//
}
}
console.log(myinstanceof([],Array));
判断是否是数组
可以利用数组中的isArry方法
console.log(Array.isArray([]))
也可以利用原型下的方法
可以判断任何类型
Object.prototype.toString.call(null)//输出[Object Null]