typeof 和 instanceof的区别
- typeof
简单来说就是用来测试变量的类型
常见的变量的类型有六种:
String
Number
Boolean
Object
Undefined
Function
使用typeof 进行检测 返回的是一个字符串的信息
let test = 123
console.log(typeof test) // number
- instanceof
简单来说就是 ----> 检测一个函数的原型是否存在与另一个对象的原型链当中
<script>
function Grandefather(){}
function Father(){}
function Son(){}
var g = new Grandefather()
Father.prototype = g //此处这个Father函数的原型 继承了 g 这个实例对象的原型链
var f = new Father() // 然后新创建的实例就能能够 通过instanceof 检测该实例的原型是否存在于 Grandfather 的原型链上
Son.prototype = f
var s = new Son()
console.log(f instanceof Grandefather) //true
console.log(s instanceof Father) //true
console.log(s instanceof Grandefather) //true
</script>
尤其要注意的是:先要使函数的原型改变,再去创建一个新的对象,不然上边的代码,打乱顺序的话就不成立了
instanceof可以对不同的对象实例进行判断,判断方法是根据对象的原型链依次向下查询,如果obj2的原型属性存在obj1的原型链上,(obj1 instanceof obj2)值为true。