加入收藏 | 设为首页 | 会员中心 | 我要投稿 烟台站长网 (https://www.0535zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

走近原型链

发布时间:2021-04-18 16:40:34 所属栏目:外闻 来源:互联网
导读:重要的概念。 构造函数 构造函数是一种比较特殊的函数,它通常被人为地约定为函数名的首字母需要大写,且必须通过new操作符来进行调用(与普通函数的本质上的区别),它的作用是用来创建特定类型的对象。在JavaScript中也一些原生的构造函数,如Object、Array

重要的概念。

构造函数

构造函数是一种比较特殊的函数,它通常被人为地约定为函数名的首字母需要大写,且必须通过new操作符来进行调用(与普通函数的本质上的区别),它的作用是用来创建特定类型的对象。在JavaScript中也一些原生的构造函数,如Object、Array、Function等等。

实例

每当构造函数被new运算符调用时,都会创建出一个新对象,这个过程被称为实例化。而这个对象就被称为实例。也就是说任何对象都是一个实例,但关键在于创建这个实例的构造函数是谁?以及它的原型是谁?

原型

构造函数内部有个特殊的属性prototype,这个属性指向了一个对象,没错它就是原型也称为原型对象。原型对象是一个十分特殊存在,每当构造函数实例化一个对象时,这个实例的[[Prototype]]会默认指向构造函数的prototype。实例对象可以通过自身的[[Porototyoe]]属性找到原型对象,而原型对象可以通过自身的construcor属性找到是哪个构造函数创建了这个实例。(注意许多浏览器会把属性[[Prototype]]替代为属性__proto__。)

构造函数、实例和原型值之间的关系

为了进一步弄清楚构造函数、实例和原型之间的关系,我

  • 实例dog通过自身的[[Prototype]]属性找到了原型Dog.prototype
  • 构造函数Dog通过自身的prototype属性找到了原型Dog.prototype
  • 原型Dog.prototype则通过自身的constructor属性找到了构造函数Dog
  • 实例dog通过constructor属性找到了构造函数Dog。

为实例dog通过constructor属性找到了构造函数Dog这个过程不用实线箭头呢?这里到底有什么细节呢🤔,让我们再来看一段简单的代码和一张图片,那么实例是如何获取到这个属性呢🤔 ,这就涉及到了JavaScript中一种特殊的行为——委托,下面我们就来了解一下什么是委托。

委托

当我们尝试去获取对象的某个属性值,但该对象并没有这个属性时,那么JavaScript 会试着从原型对象中获取属性值。如果那个原型对象也没有该属性,那么再从它的原型中寻找,依次类推直到该过程最后到达终点Object.prototype,如果仍然没有找到就返回undefined。这个过程被称为委托。

现在你就明白了,实例dog正是通过委托这种方式找到了创建自己的构造函数。在明白这一点之后,原型链也就呼之欲出了。

原型链

如果在第一个对象上没有找到需要的属性或者方法引用,引擎就会继续在它的[[Prototype]]指向的对象上进行查找。同理如果后者中也没有

(编辑:烟台站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读