原型
构造函数
一个普通函数,内部使用了this变量
实例
对构造函数使用new运算符,就能生成实例对象,并且this会绑定在实例上
原型链
一个实例对象,自身不存在的属性可以通过它的隐式原型proto向指向的原型对象找,若没有,则同理顺着该原型对象的proto到该原型对象的原型对象上找
原型(原型对象)
原型对象是每个函数的prototype属性指向的一个对象,可以理解为一个仓库,可以在上面定义其他属性,它自带一个constructor,指向回它的构造函数
- 每创建一个函数,该函数就会自带一个prototype属性(显式原型),该属性是一个指针,指向该函数的原型对象。
- 若这个函数是构造函数,则由它构建的实例会自带一个proto属性(隐式原型),该属性是一个指针,指向原型对象
- 原型对象上有一个属性constructor,该属性也是一个指针,指向其关联的构造函数
- 如果Person的原型Person.prototype对象变成了某一个类的实例Person{},这个实例又会指向一个新的原型对象Object.prototype
执行上下文
针对对象或者函数,可以理解为this的值
- 分类:
- 全局上下文:window为全局上下文
- 函数(局部)上下文
- 特点:
- 动态的,函数调用的时候时创建,函数调用结束时释放
作用域
一块地盘,一个代码段所在的区域。
- 分类:
- 全局作用域
- 函数作用域
- 块级作用域
- 作用:隔离变量,不同作用域下同名的变量名不会产生冲突
- 特点:
- 静态的,只要定义好了就一直存在,不会改变
作用域链
由多个具有从属关系的作用域形成的链,查找变量时沿着作用域链查找
- 自由变量:当前作用域没有定义的变量,可以顺着作用域链到父级作用域中去找