美文网首页
原型与原型链

原型与原型链

作者: 再见噜噜班 | 来源:发表于2019-12-02 22:12 被阅读0次

什么是原型

在声明了一个函数之后,浏览器会自动为这个函数创建一个对象,这个对象就是原型对象。每个函数都有一个prototype属性,该属性指向原型对象,这个原型对象中包含一个constructor属性,该属性指向函数本身。

function Foo(){
        this.name='king'
}
let foo = new Foo()
console.log(Foo.prototype.constructor===Foo) //true

在给函数原型对象添加属性或者方法之后,实例对象会自动拥有其属性或者方法

Foo.prototype.hi=function(){console.log('hi')}
foo.hi()  //hi

显式原型和隐式原型

  • 每个函数对象都有prototype属性,其指向显式原型属性
  • 每个实例对象都有__proto__属性,其指向隐式原型属性
  • 关系:构造函数的显式原型的值等于实例对象隐式原型的值,即Foo.prototype===foo.__proto__

原型链

  • 在访问对象属性(方法)时:
    1.先在对象本身属性中找,找到返回
    2. 如果找不到,再沿着__proto__属性链向上查找,找到返回
    3.最终没有找到,返回undefined
  • 在设置对象属性时,不会查找原型链,如果本身有该属性,就更改值,如果没有,添加属性并赋值
Foo.prototype.age=10
console.log(foo.name,foo.age,foo.color)  //king,10,undefined
foo.age=12
console.log(Foo.prototype.age,foo.age)  //10,12  ,原型对象中age属性值不变

图解原型链

原型链图解.png

其中0xxxx为内存地址值,左侧为栈内存,右侧为堆内存

相关文章

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

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

  • 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...

  • 原型、原型链

    (什么是原型、原型链?有什么作用) JavaScirpt深入之从原型到原型链 图解 Javascript 原型链 ...

网友评论

      本文标题:原型与原型链

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