美文网首页
原型对象和对象原型以及原型链

原型对象和对象原型以及原型链

作者: 沃德麻鸭 | 来源:发表于2021-10-05 18:37 被阅读0次

首先我们要知道,什么是原型对象,什么又是对象原型?

1.原型就是原型对象------prototype    作用就是:共享方法。

每一个构造函数都有一个prototype属性,指向另一个对象构造函数通过原型分配的函数是所有对象所共享的。由于在构造函数中定义的方法在创建实例时,都会开辟一个新的内存从而造成内存浪费的问题,这时我们就可以把那些不变的方法直接定义在prototype对象上,这样所有的对象的实例就可以共享这些方法。

2.对象原型__proto__

对象都会有一个__proto__属性,指向构造函数的prototype原型对象,之所以我们对象可以使用原型对象的属性和方法,就是因为对象有__proto__原型的存在。

①实例.__proto__和构造函数.prototype是等价的

②方法的查找规则:首先看实例对象上是否存在这个方法,如果存在就调用实例本身的方法,如果没有就去构造函数原型对象上去查找,如果还是没有就继续向Object.prototype中查找,直到返回null (就近原则)

③__proto__对象原型的意义就在于为对象的查找机制提供一个方向,它是一个非标准属性,因此实际开发中不可以使用这个属性,它只是内部指向原型对象。


除了原型对象和对象原型之外还有一个属性:constructor构造函数

对象原型和构造函数原型对象里面都有一个属性:constructor。我们称为构造函数,因为它指回构造函数本身。

而__proto__原型的constructor也是同样指向的是构造函数,是通过 实例.__proto__ 先指向原型对象然后再 通过 constructor指向构造函数

很多情况下,我们需要手动的利用constructor这个属性指回原来的构造函数,例如,我们修改了原来的原型对象,给原型对象赋值的是一个对象,那么就必须手动的利用constructor指回原来的构造函数。在对象中写:constructor:目标构造函数。

三者的关系图示

构造函数、实例、原型对象三者之间的关系

原型链

①只要是对象有__proto__原型,指向原型对象

实例的原型对象里面的__proto__原型指向的是Object.prototype

Object.prototype里面的__proto__原型指向的是null

④由__proto__原型连接而成的'链子'就是原型链

原型链结构

相关文章

  • 原型对象和对象原型以及原型链

    首先我们要知道,什么是原型对象,什么又是对象原型? 1.原型就是原型对象------prototype 作用就是...

  • js原型链

    目录 1.对象的原型和原型链1.1什么是原型1.2查看原型1.3对象的原型链 2.使用构造函数2.1 函数的原型链...

  • 📕 原型对象

    基本概念 原型 每一个对象都有它的原型对象,可以使用自己原型对象上的所有属性和方法 原型链 对象有原型,原型也是对...

  • 廖雪峰JS小记

    (function(){})() 原型,原型链 浅谈Js原型的理解JS 原型与原型链终极详解 对象 对象:一种无序...

  • JS-进阶-Day3

    原型链: 原型链:是一种关系,实例对象和原型对象之间的 关系,关系是通过原型(proto)来联系的 原型指向可以改...

  • 2022前端高频面试题

    JS相关 1.原型和原型链是什么 原型和原型链都是来源于对象而服务于对象的概念js中引用类型都是对象,对象就是属性...

  • 原型、原型链和原型继承

    原型链 原型链是一种关系,实例对象和原型对象之间的关系,关系是通过原型(proto)来联系的;实例对象中有prot...

  • 原型、原型链和原型继承

    原型链 原型链是一种关系,实例对象和原型对象之间的关系,关系是通过原型(proto)来联系的; 实例对象中有pro...

  • js的原型对象&原型链&js的继承

    原型对象 & 原型链 原型对象分2种:显式原型和隐式原型。 显式原型就是我们常用的prototype属性,是函数的...

  • web前端 -- Day24 js高级

    原型链 重点 原型链: 是一种关系,实例对象和原型对象之间的关系,关系是通过原型(__proto__)来联系的。 ...

网友评论

      本文标题:原型对象和对象原型以及原型链

      本文链接:https://www.haomeiwen.com/subject/ojlugltx.html