js原型和原型链

  1. prototype(显式原型)属性,这个属性是一个指针,指向的是一个原型对象,而这个对象的用途的就是包含可以由特定类型的所有实例共享的属性和方法,
    好处是,使用原型的好处是可以让所有的对象实例共享原型对象所包含的属性和方法,减小了内存的消耗。

  2. 在js中所有对象都都具有–proto–(隐式原型),指向构造该对象的构造函数的原型对象。
    在这里插入图片描述

  3. js中函数也是一个对象。每个函数都有一个prototype属性(只有函数才有prototype属性),这是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    补充:1,Preson.prototype 指向了原型对象
    ,2,Preson.prototype.constructor 指向了Preson
    ,3,默认创建的一个新函数,它的原型对象只包含constructor (构造函数)属性。
    ,4,Preson对象的实例的内部属性仅仅指向Preson.prototype
    5,per1.----proto-- === Preson.prototype

  4. 原型链 js每一次获取对象中的属性都是一次查询过程,如果在自有属性中找不到就会去原型对象中去查找,如果原型对象中还查不到,就会去原型对象的原型中查找,也就是按照原型链查找,直到找到原型链的顶端,也就是Object的原型。最终还是没找到就返回Null。