JS原型与原型链的理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/daiwu4044/article/details/81840318

每个对象都有一个隐式原型,函数也是对象所以函数也有。隐式原型指向了构造它的函数的原型对象。
函数除了有隐式原型外还有个显示原型prototype,指向了这个函数的原型对象。

tu.png

原型

  • 无论什么,只要创建了一个新函数就会根据一组特定的规则为该函数创建一个Prototype属性,这个属性指向的函数的原型对象

函数fn的prototype指向该函数的原型对象

原型对象

  • 所有的原型对象都会自动的获得一个constructor属性,它默认指向prototype属性所在的函数.

fn.prototype.constructor指向构造函数自己

实例

  • 构造函数通过new关键字创建了一个实例, 实例有个属性__proto__指向了原型对象.
    实例的__proto__属性指向构造函数的原型对象

简单总结:每个构造函数都有一个原型对象,每个原型兑现都有一个指针指向构造函数,每个实例都有一个指向原型对象内部的指针


原型链

  • 原型链是实现对象继承的主要方法
  • 基本思想: 利用原型让一个引用类型去继承另外一个引用类型的属性和方法.
  • 如果我们让原型对象等于另外一个类型的实例,那么此时的原型对象必然也包含一个指向另一个原型对象的指针,假如另一个原型对象又是另一个类型的实例,那么上述的关系是依然存在的,这样就形成了原型链~
  • 原型链的顶端是Object.__proto__

猜你喜欢

转载自blog.csdn.net/daiwu4044/article/details/81840318