- 构造函数的执行流程:
a) 1. 立刻创建一个新的对象。2. 将新建的对象设置为函数中的 this ,在构造函数中可以使用 this 来引用新建的对象。3. 逐行执行函数中的代码。4. 将新建的对象作为返回值返回。
b) 在构造函数中创建的方法,在每执行一次构造函数时,都会创建一个新的该方法,即所有实例的该方法都是唯一的。
- 每个函数都有一个 prototype,即显式原型。每个实例都有一个 __proto__ ,可称为隐式原型。
- 原型对象中有一个属性 constructor ,它指向函数对象
console.log(Date.prototype.constructor === Date) // true
- 批量重命名:alt+shift+r
- 函数提升,必须以声明的方式定义函数。
- 所有函数的原型对象都默认是 Object 的实例(Object 除外)。
- 函数.prototype 更换地址,其实例.__proto__ 地址不随之改变。
- 执行上下文 & 执行上下文栈。
- foo(i+1); // 递归调用:在函数内部调用自己。
- 先变量提升,后函数提升。