本文只是大纲总结,方便之后的知识点梳理。
大纲总结
-
一切(引用类型)都是对象,对象是属性的集合。
-
对象都是由函数创建的,而函数也是一种对象
-
函数的自带属性
prototype
,它也是一个对象 -
对象的
__proto__
属性,指向了构造函数的prototype
,但是Object.prototype
的__proto__
指向了null
-
Function
是被自身创建的,它的__proto__
指向了自身的prototype
-
值类型的
typeof
,引用类型的instanceof
。A instanceof B // A 是一个对象 // B 一般是一个函数
instanceof
的判断规则:<font color=FFD700>沿着A 的__proto__
这条线路来找,同时沿着B.prototype
这条线路来找,如果两条线能找到同一个指引,那么就返回true,如果终点未能重合就返回false.</font> -
javascript
的继承是通过原型链来实现的。 -
访问一个对象的属性的时候,首先会在基本属性中寻找,如果没有,就会沿着原型链
__proto__
继续向上寻找,这就是原型链 -
在js真正执行的时候,浏览器还需要做一些准备工作
- 变量提升,并默认赋值为undefined
- this的赋值
- 函数申明
-
函数每一次执行的时候,都会创建一个新的执行上下文,做好函数执行的准备工作。
-
函数在创建的时候(不是在调用的时候),就已经确定了函数内部自由变量的作用域。
-
处于活动状态的执行上下文环境只有一个。
-
自由变量: 在自己作用域使用了自己作用域没有声明的值(即在其他作用域中申明了)。
-
函数取自由变量的时候,要到创建它的作用域链上取,而不是调用。
-
闭包运用的2中情况:
- 函数作为返回值
- 函数作为参数传递
-
作用域和上下文环境
- 作用域:全局作用域和块级作用域以及函数作用域都是在创建的时候形成,不管你调不调用,只要创建了,就会形成它独有的作用域,就有一个自己的”地盘“。
- 上下文环境: 在函数调用的时候,就会生成自己的上下文环境,用于传递参数和赋值。
- 二者联系: 一个作用域内部可能会出现多个上下文环境。
网友评论