1. 各个场景下的this 指向问题
- 全局下的方法里面的 this 指向的是 window
- 法则-> 谁调用就指向谁?
字节:
var j = {
a:10,
b: {
a:12,
fn: function(){ console.log(this) }
}
}
j.b.fn()
此时的this 指向的是 b 不是 j
- 法则:this 永远指向它的上一级,指向上一个调用者
- bind() 不调用,只改变 this 的指向
- call apply 改变之后,并且会执行一次
- apply call传参的不同,一个传数组,一个传对象,app-> [ ] call -> { }
2. 闭包:
为什么要有闭包?
- 避免变量污染
- 私有化
- 保存变量,常驻内存
- let 变量保存在local 中
- AO 中,程序执行完就会被垃圾回收机制回收
- AO是临时变量对象
- 方法返回一个方法就是闭包
- 闭包的应用:处理私有数据:
闭包的应用场景:
- 防抖节流,库的封装(保证数据的私有性)
3. new 关键字
构造函数:构造一个实例
通过new 关键字可以继承函数的属性和方法
1. new 关键字在new 的一瞬间做了什么?
- 创建一个空对象
原生 JS 实现事件委托:把没有出来的节点需要做的事情,挂载到,已经存在的节点上
target 当前 JS 所作用的对象;