- 构造函数执行VS普通函数执行:
- 1,构造函数执行也像普通函数执行一样,产生私有上下文
- +AO
- +作用域链
- +初始化THIS
- +。。。
- +释放和不释放
- 2,区别
- 1,默认创建一个经实例对象
- +Fn被称之为类/构造函数
- +创建的这个对象称之为类的实例对象
- 2,让上下文中的this指向创建的实例对象
- +代码执行中,出现的this.xxx =xx, 就是在给 实例对象设置私有属性
- +let xxx=xxx 和实例对象没关系,只是给上下文 中设置私有变量
- 3,观察函数的返回值 return\
- +如果函数返回的是”原始值类型值“(或者没有返回 值),则把创建的实例对象返回
- +只有自己动手返回对象对象类型值,才以自己返回 的为主
- 1,构造函数执行也像普通函数执行一样,产生私有上下文
prototype和__proto__
大部分“函数数据类型”的值都具备“prototype(原型/显式原型)”属性,属性值本身是一个对象「浏览器会默认为其开辟一个堆内存,用来存储实例可调用的公共的属性和方法」,在浏览器默认开辟的这个堆内存中「原型对象」有一个默认的属性“constructor(构造函数/构造器)”,属性值是当前函数/类本身!!
-
函数数据类型
- 普通函数(实名或者匿名函数)
- 箭头函数
- 构造函数/类「内置类/自定义类」
- 生成器函数 Generator
- …
-
不具备prototype的函数
- 箭头函数
- 基于ES6给对象某个成员赋值函数值的快捷操作
- …
每一个“对象数据类型”的值都具备一个属性“proto(原型链/隐式原型)”,属性值指向“自己所属类的原型prototype”
-
对象数据类型值
- 普通对象
- 特殊对象:数组、正则、日期、Math、Error…
- 函数对象
- 实例对象
- 构造函数.prototype
- …