函数this三种指向
- 普通函数
- 普通函数:函数名() this指向window
- 构造函数
- new 函数名() this指向new创建的实例对象
- 对象方法
- 对象名.方法名() this指向对象
- 小技巧:有new就是实例 没有new就是window 有点就是左边的对象
上下文调用:修改函数修改函数内部的this
1.函数名.call(修改后this,形参1,形参2....)
2.函数名.apply(修改后的this,数组或伪组)
3.函数名.bind(修改后的this)
- bind 不会立即执行函数,而是得到一个修改this之后的新函数
- bind一般用于修改:定时器函数,事件处理函数 面试必问三者区别:
- 相同点:作用一致,修改函数this指向
- 不同点:
- 传参数方式不同:call是按照顺序传参,apply是数组/伪数组传参
- 执行机制不同:call和apply会立即执行函数而bind不会立即执行而是得到修改this的新函数
闭包 闭包closure是什么
- 闭包是一个访问其他函数内部变量的函数
- 闭包=函数+上下文引用 闭包作用
- 解决变量污染
- 一般用于回调函数
递归
- 递归函数:一个函数在内部调用自己
- 递归作用和循环相似也需要有结束条件
有种夏天叫千与千寻