当前位置:网站首页 > 技术博客 > 正文

js中原型链的理解



本文已参与「新人创作礼」活动,一起开启掘金创作之路。

原型链一直是js面试常考题,而且也是js非常核心的基础知识,也许平时不会经常使用,但是了解它会让自己大大加深对这个语言的了解,本文以非常通俗易懂的方式介绍原型链,耐心读下来,相信一定能够帮助到你。

假设你声明一个方法叫做,那么我们可以通过new Foo()来声明实例。

 

现在你可以很清晰的明白Foo()是,f1是它的。

Foo()这个构造函数是一个方法。

方法也是对象数据类型,所以可以说方法是个对象。

对象就有属性,不过有自己特殊的一个属性,叫做,其他对象没有哦。

这个属性会指向一个,而原型对象也会有一个自己的属性叫做,指向属性包含了一个指针,指回原构造函数。

 

在这里插入图片描述

上文的prototype是给提供共享方法和属性的。

实例又是怎么访问到共享方法和属性的呢?

f1实例没有prototype,而有一个属性__proto__,这是所有对象都有的属性,它指向到的,然后js这个语言就是根据这个属性来让实例访问到共享属性和方法的

Foo是f1的构造函数,Foo.prototype是Foo的原型对象,所以f1.__proto__指向Foo.prototype

 

在这里插入图片描述

Foo这个构造函数如果希望自己的实例能够拥有同一个属性,比如name,就在自己的原型对象上加上。

 

在这里插入图片描述

 

上面说所有对象都有__proto__,Foo是函数也是对象啊,所以Foo.__proto__是啥呢?

那就去找Foo的构造函数是谁呢,Foo是一个函数,拥有函数特有的方法和属性,创造的它的构造函数就是Function,这个js自带的的一个构造函数,它的Function.prototype给所有js中你创建的函数提供函数自带的一些公共方法和属性。

Foo.prototype也是对象,所以它也有__proto__。

每当我们要找__proto__,就得找它的构造函数,Foo.prototype是个对象,纯对象,所以它的构造函数是Object,那么Object的原型就是Object.prototype。

这些都是,都是构造函数的实例。 指向原型, 可以调用原型的一些公共方法, 例如都可以调用.name查看自己的函数名字。

这些都是,都是构造函数的实例。 指向原型, 所以可以调用这个原型对象的公共方法,

而有些特殊,它虽然是对象,但是并不是Object自己的实例, Object.prototype.__proto__指向,作为

  1. 方法,也就是函数,才有,就是方法的原型。
  2. 所以实例,一般都会有个对应的构造方法,也就是构造函数,实例的指向构造方法的原型。
  3. js有很多自带的构造方法,例如Array、String、Funtion、Object,都是根据js一些对象类型分配的,他们的原型上提供了许多封装好的常用方法。
  4. 所有本身是,是这个js自带构造函数的。
  5. 所有本身是,是这个js自带构造函数的,除了Object.prototype。
  6. Object.prototype.__proto__指向,作为。

在这里插入图片描述

如果哪里让你有什么意见建议,请提出,我会及时反馈的,谢谢。

  • 上一篇: imencode写入文件
  • 下一篇: pwn指的是
  • 版权声明


    相关文章:

  • imencode写入文件2025-05-22 18:30:04
  • todate函数2025-05-22 18:30:04
  • combo1的组合框2025-05-22 18:30:04
  • 相似度是什么2025-05-22 18:30:04
  • 链表是线性结构吗2025-05-22 18:30:04
  • pwn指的是2025-05-22 18:30:04
  • 标志位v2025-05-22 18:30:04
  • socks5代理搭建教程2025-05-22 18:30:04
  • 灰度发布数据库如何处理2025-05-22 18:30:04
  • 代码设计思路 示例2025-05-22 18:30:04