2. 原型链_做用域链_预处理_预解析

1. 谈谈原型html

可以实现继承,对象查找属性的规则函数

实例对象的隐式原型的值 为其 对应构造函数的 显式原型的值this

  • prototype 显示原型属性

全部函数都有显示原型属性spa

  • __proto__ 隐式原型属性

全部实例对象都有隐式原型属性prototype

全部函数都是 Function 的实例htm

Function 是经过 new 本身产生的实例对象

2. 原型链blog

 由多个隐式原型属性构成的链状结构就是原型链继承

做用: 用来查找对象的 属性/方法原型链

先自身找,找不到再去 __proto__ 找,最终找到 Object.prototype.__proto__ 上,返回 undefined

3. 做用域链

多个上下级关系的做用域造成的链, 它的方向是从小向大的(从内到外)

做用:查找变量的规则

先自身做用域找,找不到再上一级找,最终来到全局做用域,找不到就报错(xxx is not defined)

4. 预解析、预处理作了什么事?

  • 全局代码:
  • js 引擎在将要执行全局代码以前,建立一个全局执行上下文对象 window
  • 将 var 关键字声明的变量,添加为 window 属性,值为 undefined
  • 将 function 关键字声明的函数,添加 window 方法,值为函数体
  • 肯定全局 this 指向,指向为 window
  • 函数代码:
  • js 引擎在将要执行函数代码以前,建立一个函数执行上下文对象(没办法直接操做)
  • 将 var 关键字声明的变量,添加为函数执行上下文对象属性,值为undefined
  • 将 function 关键字声明的函数,添加函数执行上下文对象方法,值为函数体
  • 将形参赋值为实参,添加为函数执行上下文对象的属性
  • 将传入的实参添加到 arguments 中, 添加为函数执行上下文对象的属性
  • 肯定 this 的指向, 添加为函数执行上下文对象的属性

5. 完整原型图

http://www.javashuo.com/article/p-gfquxsnv-h.html

相关文章
相关标签/搜索