day13
函数内部属性
arguments:类数组对象,包含了函数传入的所有参数,arguments有一个成员callee,表示正在运行中的函数本身,通过使用改成员可以实现匿名递归
this:面向对象语言中 this 表示当前对象的一个引用。
但在 JavaScript 中 this 不是固定不变的,它会随着执行环境的改变而改变。
- 在方法中,this 表示该方法所属的对象。
- 如果单独使用,this 表示全局对象。
- 在函数中,this 表示全局对象。
- 在事件中,this 表示接收事件的元素。
- 在显式函数绑定时,我们可以自己决定this的指向
IIFE
IIFE: Immediately Invoked Function Expression,意为立即调用的函数表达式,也就是说,声明函数的同时立即调用这个函数。
作用:
- 页面加载完成后只执行一次的设置函数。
- 将设置函数中的变量包裹在局部作用域中,不会泄露成全局变量。
写法:
(function(形参){
函数体内容
})(实参);
函数的调用
- 函数名(实参列表);
-
函数名.call(执行环境对象,实参列表);
-
函数名.apply(执行环境对象,实参列表数组);
-
函数名.bind(执行环境对象)(实参列表);
call和apply可以改变this的指向,并且是立即执行函数,但是bind是返回一个函数,通过调用返回的这个函数才会执行函数
闭包
闭包就是指有权访问另一个函数作用域中的变量的函数。
闭包的生成有三个必要条件
- 函数嵌套函数
-
内部函数引用了外部函数中的数据(属性、函数)
-
参数和变量不会被回收