主题
JS 基础 ( ES5)
1. 原型
这里可以谈很多, 只要围绕 [[ prototype ]]
谈,都没啥问题
2. 闭包
牵扯作用域, 可以两者联系起来⼀起谈
3. 作用域
词法作用域, 动态作用域
4. this
不同情况的调用, this
指向分别如何 。顺带可以提⼀下 es6
中箭头函数没有 this
, arguments
, super
等, 这些只依赖包含箭头函数最接近的函数
5. call,apply , bind 三者用法和区别
参数 、绑定规则 ( 显示绑定和强绑定), 运行效率 ( 最终都会转换成⼀个⼀个的参数去运行) 、运行情况 ( call
, apply
立即执行, bind
是 return
出⼀个 this
“固定”的函数, 这也是为什么 bind
是强绑定的⼀个原因)
注:“固定”这个词的含义, 它指的固定是指只要传进去了
context
,则bind
中return
出来的函数this
便⼀直指向context
, 除非context
是个变量
6. 变量声明提升
js
代码在运行前都会进行 AST
解析, 函数申明默认会提到当前作用域最前面, 变量申明也会进行提升 。但赋值不会得到提升 。关于 AST
解析, 这里也可以说是形成词法作用域的主要原因