发表于: 2020-06-06 23:22:23

1 2221


原型和原型链

原型和原型链

简单来说

prototype是函数的原型对象,即prototype是一个对象,它会被对应的__proto__引用。


要知道自己的__proto__引用了哪个prototype,只需要看看是哪个构造函数构造了你,那你的__proto__就是那个构造函数的prototype

所有的构造函数的原型链最后都会引用Object构造函数的原型,即可以理解Object构造函数的原型是所有原型链的最底层,即Object.prototype.__proto===null


原型链就是对象指向原型对象的指针形成的链条


回顾下创建对象的三种方法

利用 new Object()

  var obj1 = new Object();

对象字面量

var obj2={};

以及构造函数

function car(brandcolor) {
        this.brand = brand;
        this.color = color;

      }

  var car1 = new car("BMW""red");
  var car2 = new car("BYD""blue");



构造函数  :一种特殊的函数,主要用来初始化独享,总new一起使用

可以将对象中的公共属性和方法抽取出来,封装到函数里


为什么要用原型对象    实现内存共享


上面的car1和car2创建了两个内存空间 互不相通


每个对象都有__proto__属性  指向构造函数的原型对象
__proto__对象原型和原型对象prototype是等价的
构造函数原型和实例原型对象中的constructor返回构造函数本身

 console.log(car.prototype)
 console.log(car1.__proto__)
用来记录该对象应用于哪个构造函数
如果直接进行赋值会覆盖掉原型对象中的constructor  


car.prototype = {
        type: "轿车",
        engin: "v6",
      };
通过赋值重新指向构造函数

  car.prototype = {

        constructor = car;

        type: "轿车",
        engin: "v6",
      };


图解


返回列表 返回列表
评论

    分享到