忽略该图的细节(如内存地址值没有用二进制)

以下是对该图进一步的理解和总结

1. JS对象概念的辨析

  • 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁)
  • 明确Object也是JS默认执行的, 可以理解为 var Object = new Object() 是JS默认执行的
  • 明确Function 也是对象
    可以这样理解 `var Function = new Object()` 是JS默认执行的
  • 明确任何一个函数也是一个对象(即我们所说的类型对象(类型对象就是用function fn(){}创建出来的函数对象),与之对应的实例对象就是指通过调用构造方法new 创建的对象或者说直接用{}创建的对象(本质也是调用构造函数))
    	/** 如何理解任何一个函数也是一个对象**/
    // 1. 函数不光可以用function关键字创建也可以用如下方法创建
    var fn = new Function(); // 等同于 function fn(){}
    // 2. Function 也是对象,是这样来的
    var Function = new Object();
    // 3. Object() 是什么:构造方法(JS默认定义的)

2. JS原型对象的辨析

  • 首先是一个对象
  • 其次在代码中表现为:有一个属性其指向这个空对象(或者说是有一个变量,该变量储存该对象的地址)

3. JS隐式原型和显式原型的辨析

  • 显式原型:即在函数中有一个属性叫prototype其指向一个空的对象(或者说这个属性的值保存这个空对象的地址值),这个属性就叫做显式原型对象(或者说这个属性保存的地址,通过该地址寻找到一个对象,该对象叫做显式原型对象)
  • 隐式原型:对象中同样有一个属性叫__proto__其指向一个空的对象(或者说这个属性的值保存这个空对象的地址值),这个属性就叫做隐式原型对象(或者说这个属性保存的地址,通过该地址寻找到一个对象,该对象叫隐式原型对象)
    • 需要注意的是一般来说JS在创建对象的时候自动把__proto__指向其构造函数的prototype(也就是说会运行如下代码__proto__ = prototype) 这两个变量保存同一个空对象的地址】

通常我们会有一句话概括上面的内容:即一个对象(这里的对象是指实例对象)的隐式原型对象指向其构造函数(这里是指构造函数对象)的显式原型对象

4. Object 的原型对象

  • 特殊的:明确 Object显式原型对象的__proto__(隐式原型对象)值为null,因为不为null 那就无限循环了(特殊情况)

图解JavaScript原型:原型链及其分析 | JavaScript图解的更多相关文章

  1. javaScript系列 [04]-javaScript的原型链

    [04]-javaScript的原型链 本文旨在花很少的篇幅讲清楚JavaScript语言中的原型链结构,很多朋友认为JavaScript中的原型链复杂难懂,其实不然,它们就像树上的一串猴子. 1.1 ...

  2. javascript prototype原型链的原理

    javascript prototype原型链的原理 说到prototype,就不得不先说下new的过程. 我们先看看这样一段代码: <script type="text/javasc ...

  3. JavaScript(6)--- 原型链

    原型链 再上一篇有简单讲过原型:JavaScript(5)--- 面向对象 + 原型 讲原型链知识之前,先说几个重要的结论. 1.原型链就是 对象的__proto__所连接的链状结构 2.protot ...

  4. 彻底搞清楚 JavaScript 的原型和原型链

    JavaScript真的挺无语的,怪不得看了那么多的介绍文章还是一头雾水,直到自己终于弄懂了一点点之后才深有体会: 先从整体说起吧,发现没有基础做依据,那都是空中楼阁: 先从基础开始介绍吧,又发现基础 ...

  5. javascript的原型链那些事

    如果你对javascript的原型链还有任何疑问,请看这篇文章 进入主题 前言 原型链的规则不百分百适用于所有情况 显式原型:prototype,是一个对象{} 隐式原型:__proto__,是一个对 ...

  6. JavaScript的原型和原型链

    说到JavaScript的原型和原型链,相关文章已有不少,但是大都晦涩难懂.本文将换一个角度出发,先理解原型和原型链是什么,有什么作用,再去分析那些令人头疼的关系. 一.引用类型皆为对象 原型和原型链 ...

  7. Javascript的原型链图

    90%的前端或者js程序员或者老师们对Javascript懂得不比这个多 给手机看的 但是这个图里的所有褐色单向箭头链就是Javascript的原型链(颜色标注对理解js原型链很关键) 这图中的各个_ ...

  8. javascript 之原型、原型链-14

    原型 原型是一个对象,每个函数对象(在javascript 之对象中说过函数也是对象 )都有一个属性(prototype)指向这个对象--原型对象,这个对象的作用是让所有对象实例共享原型对象中的属性. ...

  9. JavaScript prototype原型和原型链详解

    用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了, ...

  10. 三张图搞懂JavaScript的原型对象与原型链

    对于新人来说,JavaScript的原型是一个很让人头疼的事情,一来prototype容易与__proto__混淆,二来它们之间的各种指向实在有些复杂,其实市面上已经有非常多的文章在尝试说清楚,有一张 ...

随机推荐

  1. Web前端入门第 10 问:HTML 段落标签( <p> )嵌套段落标签( <p> )的渲染结果会怎样?

    HELLO,这里是大熊学习前端开发的入门笔记. 本系列笔记基于 windows 系统. 曾经有一个神奇的 bug 摆在我面前,为什么套娃一样的 HTML 语法,在段落标签 <p> 身上不生 ...

  2. javascript 陀螺仪加摄像头可以玩出AR效果

    原文链接:https://blog.jijian.link/2020-09-08/js-ar/ 重要事情说三遍 此文章中的API接口,必须放在 https 协议下测试!浏览器APP必须开启摄像头权限! ...

  3. calico配置报错 kubelet.go:2855] "Container runtime network not ready"

    前言 配置 calico 网络插件时,kubectl get node 报错: NoReady kubectl describe node node Name: node Roles: <non ...

  4. PIL或Pillow学习1

    PIL( Python Imaging Library)是 Python 的第三方图像处理库,由于其功能丰富,API 简洁易用,因此深受好评. 自 2011 年以来,由于 PIL 库更新缓慢,目前仅支 ...

  5. OSPF协议报文

    OSPF(Open Shortest Path First,开放最短路径优先)是一种内部网关协议(Interior Gateway Protocol,IGP),用于在同一个自治系统(Autonomou ...

  6. .NET 环境下的三维渲染库 HelixToolkit.SharpDX

    1. 引言 在 .NET 生态系统中,三维渲染一直是开发者面临的一个挑战.虽然 WPF 提供了基础的 3D 渲染支持,但性能和功能都较为有限.而 HelixToolkit.SharpDX 作为一款基于 ...

  7. 冒泡排序(LOW)

    博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ import random def bubble_sort(li): for i ...

  8. CENTOS 7 使用Docker安装oracle 11g

    1.docker第一次安装失败,下一次会提示同名的容器已经存在,解决办法: docker container ls -a 根据上面执行的接口,选择一个containerid,然后带入到下面的命令 do ...

  9. 用Docker Swarm实现容器服务高可用

    背景与技术选择 根据我之前的几篇「Django 系列」文章,后端架构中我使用了 Django + Celery + RabbitMQ 三个框架/服务.现在有几个问题: 如何用容器快速部署这三个应用? ...

  10. leetcode - 743

    网络延迟时间 迪杰斯特拉的朴素算法流程: 邻接矩阵的方法 点击查看代码 class Solution { public int networkDelayTime(int[][] times, int ...