0
点赞
收藏
分享

微信扫一扫

js原型和原型链

caoxingyu 2022-05-01 阅读 135
javascript

prototype(原型对象)

每一个函数天生自带一个属性叫做prototype,是一个对象

只要函数定义好以后,这个prototype就出生了

构造函数也是函数,构造函数也有prototype 我们可以向里面添加内容

prototype里面有一个属性叫做constructor

 表示我是哪一个构造函数伴生的原型对象

constructor 属性(构造器)

 只有函数天生自带的那个prototype上才有

表示我是哪一个构造函数所自带的原型对象

作用:判断数据类型

每一个对象天生自带一个属性叫做:_proto_指向所属构造函数的prototype

当一个对象,没有准确的构造函数来实列化对象的时候,我们都看作是内置构造函数Object的实例

结论:

  • 🚗任何一个对象开始查找
  • 🚗按照_proto_开始向上查找
  • 🚗最终都能找到Object.prototype
  • 🚗我们管这个使用_proto_串连起来的对象链状结构,叫做原型链

原型链的作用

为了对象访问机制服务

原型:

  • 是每一个函数自带的一个对象空间,它在里面写方法是为了给实列使用的多个实例共享方法的

原型链:

  • 就是使用_proto_串联起来的对象链状结构,为了对象访问机制服务的
  • 原型和原型链没有任何关系就像java和JavaScript的关系

所有的引用类型(数组、对象、函数)都有一个__proto__属性(也称隐式原型属性),属性值是一个普通的对象

所有的函数都有一个prototype属性(也称显式原型属性),属性值也是一个普通的对象; 

所以三者的关系是,每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。通俗点说就是,实例通过内部指针可以访问到原型对象,原型对象通过constructor指针,又可以找到构造函数。

举报

相关推荐

0 条评论