一:基础深入
- 用于判断数据类型
typeof,返回值是数据类型的字符串,比如检测undefined,返回值为’underfined’
可以判断:undefined/ 数值 / 字符串 / 布尔值 / function
不能判断: null(object )与object object与array(object )
instanceof:
判断对象的具体类型
===(相同且类型相同,==只要相同,不需要类型相同):
可以判断: undefined, null
-
什么时候必须使用[‘属性名’]的方式?
属性名包含特殊字符: - 空格
属性名不确定(属性名为变量)
-
执行函数修改this指向
test2.call/apply(obj): 临时让test2成为obj的方法进行调用,修改this的指向,call和apply第一个参数都是修改的this指向的对象,call后面的参数为执行test2函数传递的参数,和apply的区别在于,apply会把所有携带的参数放入一个数组中
-
立即执行函数(Immediately-Invoked Function Expression—IIFE)
作用
1) 隐藏实现
2)不会污染外部(全局)命名空间
3)用它来编码js模块
-
原型(prototype)
-
显式原型和隐式原型(prototype 和 proto__)
图解 -
原型链
访问一个对象的属性时,
先在自身属性中查找,找到返回
如果没有, 再沿着__proto__这条链向上查找, 找到返回
如果最终没找到, 返回undefined
别名: 隐式原型链
作用: 查找对象的属性(方法)
-
探索instanceof
1) instanceof是如何判断的?
表达式: A instanceof B(B为函数,A为实例对象)
如果B函数的显式原型对象在A对象的原型链上, 返回true, 否则返回false
2) Function是通过new自己产生的实例
图解
测试