JavaScript高级

83 阅读1分钟

函数this三种指向

  1. 普通函数
  • 普通函数:函数名() this指向window
  1. 构造函数
  • new 函数名() this指向new创建的实例对象
  1. 对象方法
  • 对象名.方法名() this指向对象
  • 小技巧:有new就是实例 没有new就是window 有点就是左边的对象

上下文调用:修改函数修改函数内部的this

1.函数名.call(修改后this,形参1,形参2....)

2.函数名.apply(修改后的this,数组或伪组)

3.函数名.bind(修改后的this)

  • bind 不会立即执行函数,而是得到一个修改this之后的新函数
  • bind一般用于修改:定时器函数,事件处理函数 面试必问三者区别:
  • 相同点:作用一致,修改函数this指向
  • 不同点:
  1. 传参数方式不同:call是按照顺序传参,apply是数组/伪数组传参
  2. 执行机制不同:call和apply会立即执行函数而bind不会立即执行而是得到修改this的新函数

闭包 闭包closure是什么

  1. 闭包是一个访问其他函数内部变量的函数
  2. 闭包=函数+上下文引用 闭包作用
  • 解决变量污染
  • 一般用于回调函数

递归

  • 递归函数:一个函数在内部调用自己
  • 递归作用和循环相似也需要有结束条件

有种夏天叫千与千寻