JS-原型与原型链

原型和原型链

1.显式原型

  • prototype是一个指针,指向一个空的对象(constructor属性除外),这个对象是原型对象,被称为显式原型
  • 每一个function都有一个prototype属性,箭头函数除外
  • 当函数被实例化的时候,如果实例化对象调用某个方法或者属性,实例化对象自己没有,就会找到这个构造函数的原型对象上去找
  • 只有构造函数的prototype才有意义,其他的函数prototype没有用

2.隐式原型

  • 每一个Object都有一个隐式原型__proto__
  • 对象的隐式原型指向其构造函数的显示原型
  • 当对象获取某个属性,自己没有的时候,就会沿着隐式原型__proto__找到其构造函数的显式原型prototype
  • 当给对象设置一个属性或方法的时候,不会通过隐式原型,而是直接给对象设置上去

3.constructor

  • 使用constructor可以知道对象是被谁实例化出来的(获取对象的构造函数)
  • constructor存在在构造函数的原型对象上
  • 任意的对象都是被实例化出来的,所以都能找到构造函数的原型对象,所以每个对象都能调用constructor属性
  • 构造函数的prototype指向其原型对象,原型对象的constructor指向其构造函数。

4.原型链

    作用:对象查找属性的规则,原型链的终点是null
       步骤:
             (1)先在自身属性上找
             (2)找不到就沿着隐式原型属性一层层找
             (3)这个过程找到了就结束
             (4)直到找到`Object.prototype.__proto__`上,如果还没有找到,则返回值是undefined
复制代码

1625747695(1).jpg

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享