一、原型链和作用域链的区别
区别:
1.作用域是对于变量而言,原型链是对于对象的属性。
2. 作用域链顶层是window,原型链顶层是Object。
原型链:
原型链是对于对象的属性,每一个实列化出来的对象都有一个__photo__属性指向它的原型对像,(查找一个对象是否有某个属性或方法)
当查找一个对象的属性时,JavaScript 会向上调用原型链,直到找到给定名称的属性为止,到查找到达原型链的顶部(也就是 Object.prototype),如果仍然没有找到指定的属性,就会返回 undefined。
作用域链:
作用域链本质上是底层的变量查找机制,在函数被执行时,会优先在当前函数作用域中查找变量
如果当前作用域查找不到则会依次逐级查找父级作用域,直到全局作用域
二、JS判断类型
1) typeof
typeof算是最常见的了,使用它会返回一个字符串,可以判断一些基本类型和对象object(number、string、boolean、undefined、object[对象])