发表于: 2020-03-28 21:36:07

0 1843


今天完成的事情:

明天计划的事情:

遇到的问题:

收获:

对象的原型是:__proto__

函数的原型是:prototype

使用new命令时,它后面的函数依次执行下面的步骤。

  1. 创建一个空对象,作为将要返回的对象实例。

  2. 将这个空对象的原型,指向构造函数的prototype属性。:
  3. 将这个对象的__proto__指向构造函数的prototype属性或者说使__proto__的键值等于构造函数的prototype属性的键值又或者说2者指向同一个堆内存里的地址

  4. 将这个空对象赋值给函数内部的this关键字。
  5. 或者说使this指向的对象变为这个空对象:简单来说进行了一次赋值

  6. 开始执行构造函数内部的代码。

输出这个实例对象;

这个从堆栈内存的角度解释很简单;

https://www.bilibili.com/video/BV1Kt411w7MP?p=29




问:原型链怎么形成?

答:每个对象都有一个内部链接到另一个对象, 称为它的原型 prototype。该原型对象有自己的原型,等等,直到达到一个以null为原型的对象。 根据定义,null没有原型,并且作为这个原型链prototype chain中的最终链接。

问:constructor 是什么?

答:构造函数的prototype 属性指向原型对象,原型对象也生成一个对应的constructor属性指向构造函数。所以constructor用来执行对应的 构造函数。




JS在创建对象(不论是普通对象还是函数对象)的时候,都有一个叫做__proto__的内置属性,用于指向创建它的函数对象的原型对象prototype,我们把这个有__proto__串起来的直到Object.prototype.__proto__为null的链叫做原型链


返回列表 返回列表
评论

    分享到