一.闭包?
1.1什么叫闭包?
一个函数和对其周围状态的引用捆绑在一起就叫做闭包,简单来说就是一个函数包含另一个函数。在JavaScript中,闭包就是能够读取外层函数内部变量的函数。
1.2变量作用域
变量的作用域为两种:全局作用域和局部作用域
全局作用域:函数内部可以读取全局变量
局部作用域:函数外部无法读取函数内部的局部变量
二.JavaScript中的this对象
this 总是返回一个对象,简单说,就是返回属性或方法“当前”所在的对象。
三.this的指向
- 构造函数内部的this指向新创建的对象。
- 直接通过函数名调用函数时,this指向的是全局对象window。
- 如果将函数作为对象的方法调用时,this将会指向该对象。
- 在函数中,this 表示全局对象。
- this始终指向调用该函数的对象。
- 箭头函数中的this是定义函数时绑定的,与执行上下文有关。
四.更改this的指向
- 使用apply()方法
function fn(){
console.log(this.name)//谁执行this就是谁
}
fn.apply({name:'张三'})
2.使用call()方法
var obj2 ={
name : '李四',
age : 22
}
fn.call(obj2)//此时,fn函数中的this指向传入的对象