1、闭包
闭包简单来说就是函数的嵌套,也是函数作用域的嵌套,通过闭包可以访问到外层函数的局部变量
1.1闭包的优点
闭包可以有效地减少全局变量的声明,避免全局污染
1.2闭包的缺点
变量不会被垃圾回收机制回收,容易造成内存泄漏
2、this
2.1指向
1、this单独使用时,指向window
2、对象中的函数中的this,指向对象
3、函数中的this指向window
4、严格模式下,函数中的this指向undefined
5、事件中,this表示触发该事件的元素,在标签内写事件,需要将this作为实参传递
6、在函数的函数中,this指向window
2.2改变指向
1、call
对象名称.函数名称.call(需要指向的新对象,实参1,实参2……)
2、apply
对象名称.函数名称.apply(需要指向的新对象,[实参1,实参2……])
3、bind
对象名称.函数名称.bind(需要指向的新对象,实参1,实参2……)()
三者的区别:
apply和 call的区别是 call方法接受的是若干个参数列表,而 apply接收的是一个包含多个参数的数组。
bind()方法创建一个新的函数, 当被调用时,将其this关键字设置为提供的值,在调用新函数时,在任何提供之前提供一个给定的参数序列。