美文网首页
原型与原型链简介

原型与原型链简介

作者: 何小蒙 | 来源:发表于2020-08-24 18:17 被阅读0次

以下是个人总结

1、原型
我们创建的每个函数都有一个prototype(原型)属性,在默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个指向prototype属性所在函数的指针。例子:

function Person() {} // 创建一个函数
Person.prototype.constructor = Person // Person就是prototype属性所在函数

当调用构造函数创建一个实例时,该实例的内部就会包含一个指针,指向构造函数的原型对象,例子:

function Person() {} // 创建一个函数
let person1 = new Person()  // 创建一个实例
person1.__proto__ === Person.prototype // true

2、原型链
原型对象 = 另一个类型的实例
因为实例中包含一个指向原型对象的指针,所以如果让一个原型对象等于另一个类型的实例,此时的原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数的指针。如此层层递进,就构成了实例与原型的链条。这就是所谓原型链的基本概念。例子:

function A () {
    this.a = true
}

A.prototype.getA = function () {return this.a}

function B  ()  {}

B.prototype = new A() // B的原型指向A的实例

let b = new B() // b是B的实例

b.getA() // true

此时,

b. __proto__ = B.prototype
// B.prototype指向了A的实例,所以B的原型对象不是默认的了,也没有默认的 constructor
b. __proto__. __proto__ = A.prototype

这个概念原本是打算在网上看博客的,但是发现很多博客写的并不是很严谨,无赖之下只好自己看JS高程。建议各位如果方便的话,最好直接去看JS高程第六章面向对象的程序设计,比大部分博客好理解,而且知识体系介绍的也比较全面。
本文参考JavaScript高级程序设计(第3版)

相关文章

  • JavaScript 原型、原型链与原型继承

    原型,原型链与原型继承 用自己的方式理解原型,原型链和原型继承 javascript——原型与原型链 JavaSc...

  • 原型与原型链简介

    以下是个人总结 1、原型我们创建的每个函数都有一个prototype(原型)属性,在默认情况下,所有原型对象都会自...

  • 2019-01-28

    原型与原型链

  • 廖雪峰JS小记

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

  • Javascript(三)之原型继承理解

    进阶路线 3 原型继承 3.1 优秀文章 最详尽的 JS 原型与原型链终极详解 一 最详尽的 JS 原型与原型链终...

  • JavaScript 面向对象第一篇

    1.原型链 ---- (实例对象与原型之间的连接 叫做原型链) 2. hasOwnproperty ----(看是...

  • 原型与原型链以及继承

    今天复习下原型与原型链的知识,以及记录新学的继承知识点。 知识点纲要 原型与原型链 es5与es6继承 什么是原型...

  • JavaScript深入理解this关键字(一)

    摘要 最近在公司需要做培训,我打算把JavaScript中的原型与原型链讲给大家。但我在梳理原型与原型链的时候发现...

  • js_继承及原型链等(四)

    js_继承及原型链等(三) 1. 继承 依赖于原型链来完成的继承 发生在对象与对象之间 原型链,如下: ==原型链...

  • 原型链&instanceof关键字

    1.原型链&instanceof关键字 简单说明 原型链 与 instanceof 作用原理 1.原型链 1...

网友评论

      本文标题:原型与原型链简介

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