闭包及作用域
一、作用域
(1)作用域:执行上下文。每个函数都有自己的执行上下文和活动对象。这些环境用于储存上下文中的变量、函数声明、参数等。只有函数才能制造作用域。
(2)this:是一个指向函数执行环境的指针。this永远指向最后调用它的对象,并在执行时才能获取值,定义是无法确认它的值。
注:call() 、apply()、bind():可以改变 this 的指向。第一个参数是this的指向对象,如 call 和 apply 第一个参数指向 null 或 undefined 时,那么 this 就会指向 windows 对象。区别:call 和 apply 立即执行 , bind 可以让函数任何时候调用。如:
1 obj.fun.call(a,'b','a');
2 obj.fun.call(a,['a','b'];
3 obj.fun.call(a,'a','b')();
二、闭包
(1)概念:能够读取其他函数的内部变量的函数。在JS中只有函数内部的子函数才能读取局部变量,及定义在内部函数的函数。
(2)用途:a、读取内部的变量
b、让变量始终保留在内存中