原型、原型链?

54 阅读1分钟

原型对象 prototype

总结:构造函数身上的一个属性原型:用于挂载共享函数的对象(e、剩余函数只存在于数组)
解决问题/成因:构造函数中使用函数时有浪费内存的问题?

const str = {
      name: 'pink',
      age: 20
    }
str.sex = 'man'
console.log(str);
//{name: 'pink', age: 20, sex: 'man'}
 const Str = function (name, age) {
      this.name = name;
      this.age = age;
    }
    console.log(Str.prototype);//原型对象身上就是用于挂载函数的
    // {constructor: ƒ}
    // Sing:ƒ ()
    // constructor:ƒ (name, age)
    // [[Prototype]]:Object
    Str.prototype.Sing = function () {
      console.log('yes');
    }
    const w1 = new Str('pink', 20)
    w1.Sing()// yes 可以使用实例对象直接调用函数

构造函数/原型this

作用:指向实例化对象

const Str = function (name) {
      this.name = name;
    }
    let s = 0
    Str.prototype.sum = function (...arr) {
      for (let i = 0; i < arr.length; i++) {
        s += arr[i]
      }
      return s;
    }
    const p1 = new Str('pink')
    console.log(p1);
    console.log(p1.sum(1, 8, 40));

constructor

作用:可以用于重新指回构造函数

对象原型 --proto--

作用:指向父级原型对象

原型链

本质:查找规则

作用:

  • 继承
  • prototype用来实现基于原型的继承与属性的共享
  • 避免了代码冗余,公用的属性和方法,可以放到原型对象中,这样,通过该构造函数实例化的所有对象都可以使用该对象的构造函数中的属性和方法!
  • 减少了内存占用
    视频地址: www.bilibili.com/video/BV1Y8…