美文网首页让前端飞
原型链完全解析

原型链完全解析

作者: jie_YJ | 来源:发表于2019-01-28 01:03 被阅读3次

什么是原型链?原型对象?原型?

我们来慢慢逐一解析。。。

原型对象:一个构造函数的prototype(原型)属性就是指向它的原型对象,通过这个构造函数实例化的对象,都可以共享原型对象中的属性和方法。

原型链:每个对象都有一个__proto__属性,这个属性指向一个原型对象。而原型对象也是一个对象,所以它也有自己的__proto__,直至指向为null值。为什么??后面会进一步解析。这一个链路过程就称为原型链

js有几个点和特性要先牢记的。。

1.任何对象都有__proto__属性;

2.任何函数都有prototype属性;

3.一切皆对象(包括函数),对象也是函数;

4.ECMAScript规定了两个特殊的内置对象:Object和Function。他们的特殊性在于,他们本身既是对象又是函数,而他们同时也是对象和函数的构造器。

来个简单的

基本上都可以用一个三角形来解析一个环路的关系。这个是比较容易看懂的。

先放个大招来看看整个的原型链是怎么走的!

全图

不知道你有没看懂,不过也没关系。。下面会逐个逐个解析!

一,

1

这个就是最开始那个,没什么好解释的。

二,

2

由一切皆对象得,函数也是对象的一种。那必然也是通过一个构造函数实例化出来。可以通过Person.__proto__ === Function.prototype来验证这个例子!而Function是属于function类型的对象(系统编译的二进制代码函数),可以直接拿来使用。所以有一个很神奇的回路:

三,

3

Function对象通过它本身来进行实例化。

1)new Function instanceof Function为true;

2)Function.__proto__ === Function.prototype

就能得出这个结论。

四,

4

继续继续。。没什么好解释

五,

说回Person.prototype

4

继续往下走!

六,

6.

Object也是属于js的内置对象,

七,

如果按照对象都有__proto__属性的逻辑,因为Object.prototype是一个对象,如果由Object()生成就会有:

Object.prototype.__proto__ === Object.prototype 指向它本身,为了让原型链有终点,不无限循环。就让Object.prototype的__proto__来指向了null值。

7,

关于Object.prototype,跟一般函数的prototype不一样,有一堆的方法,都是js对象的系统默认方法。


这些都是个人自己总结的经验,如有不对和错误,勿喷,欢迎指出错误!

欢迎大家互相交流~

相关文章

  • 原型链完全解析

    什么是原型链?原型对象?原型? 我们来慢慢逐一解析。。。 原型对象:一个构造函数的prototype(原型)属性就...

  • js 进阶语法

    知识点 原型链 this的指向 作用域和预解析 new 关键字 闭包 继承 原型链 什么是原型链 1.1 由于pr...

  • javascript高级程序设计10

    继承1.原型链继承实例和原型之间构造一条原型链 (换句话就是通过原型搭建桥梁) 思路解析:就是实例指向...

  • JavaScript 原型链学习

    JavaScript prototype 与 _proto_(原型链解析) prototype 概念 protot...

  • Javascript 基础 And 进阶面试

    知识点: 原型链 this指向 作用域和预解析 new关键字 闭包 DOM事件 继承 原型链 面试题(一): 面试...

  • JS面试题(进阶)——原型链、this指向、闭包

    知识点: 原型链 this指向 作用域和预解析 new关键字 闭包 DOM事件 继承 原型链 面试题(一): 面试...

  • Javascript 基础 And 进阶

    (一) 知识点: 原型链 this指向 作用域和预解析 new关键字 闭包 DOM事件 继承 原型链 面试题(一)...

  • Javascript 基础 And 进阶

    知识点: 原型链 this指向 作用域和预解析 new关键字 闭包 DOM事件 继承 原型链 面试题(一): va...

  • JS基础-深入浅出继承

    前言 上篇文章详细解析了原型、原型链的相关知识点,这篇文章讲的是和原型链有密切关联的继承,它是前端基础中很重要的一...

  • JS进阶系列

    在JS入门难点解析系列中,我们对JS的一些重要概念,比如:作用域,作用域链,原型,原型链,继承,活动对象,this...

网友评论

    本文标题:原型链完全解析

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