图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制)
以下是对该图进一步的理解和总结
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
) 这两个变量保存同一个空对象的地址】
- 【 需要注意的是一般来说JS在创建对象的时候自动把__proto__指向其构造函数的prototype(也就是说会运行如下代码
通常我们会有一句话概括上面的内容:即一个对象(这里的对象是指实例对象)的隐式原型对象指向其构造函数(这里是指构造函数对象)的显式原型对象
4. Object 的原型对象
- 特殊的:明确 Object显式原型对象的__proto__(隐式原型对象)值为null,因为不为null 那就无限循环了(特殊情况)
图解JavaScript原型:原型链及其分析 | JavaScript图解的更多相关文章
- javaScript系列 [04]-javaScript的原型链
[04]-javaScript的原型链 本文旨在花很少的篇幅讲清楚JavaScript语言中的原型链结构,很多朋友认为JavaScript中的原型链复杂难懂,其实不然,它们就像树上的一串猴子. 1.1 ...
- javascript prototype原型链的原理
javascript prototype原型链的原理 说到prototype,就不得不先说下new的过程. 我们先看看这样一段代码: <script type="text/javasc ...
- JavaScript(6)--- 原型链
原型链 再上一篇有简单讲过原型:JavaScript(5)--- 面向对象 + 原型 讲原型链知识之前,先说几个重要的结论. 1.原型链就是 对象的__proto__所连接的链状结构 2.protot ...
- 彻底搞清楚 JavaScript 的原型和原型链
JavaScript真的挺无语的,怪不得看了那么多的介绍文章还是一头雾水,直到自己终于弄懂了一点点之后才深有体会: 先从整体说起吧,发现没有基础做依据,那都是空中楼阁: 先从基础开始介绍吧,又发现基础 ...
- javascript的原型链那些事
如果你对javascript的原型链还有任何疑问,请看这篇文章 进入主题 前言 原型链的规则不百分百适用于所有情况 显式原型:prototype,是一个对象{} 隐式原型:__proto__,是一个对 ...
- JavaScript的原型和原型链
说到JavaScript的原型和原型链,相关文章已有不少,但是大都晦涩难懂.本文将换一个角度出发,先理解原型和原型链是什么,有什么作用,再去分析那些令人头疼的关系. 一.引用类型皆为对象 原型和原型链 ...
- Javascript的原型链图
90%的前端或者js程序员或者老师们对Javascript懂得不比这个多 给手机看的 但是这个图里的所有褐色单向箭头链就是Javascript的原型链(颜色标注对理解js原型链很关键) 这图中的各个_ ...
- javascript 之原型、原型链-14
原型 原型是一个对象,每个函数对象(在javascript 之对象中说过函数也是对象 )都有一个属性(prototype)指向这个对象--原型对象,这个对象的作用是让所有对象实例共享原型对象中的属性. ...
- JavaScript prototype原型和原型链详解
用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了, ...
- 三张图搞懂JavaScript的原型对象与原型链
对于新人来说,JavaScript的原型是一个很让人头疼的事情,一来prototype容易与__proto__混淆,二来它们之间的各种指向实在有些复杂,其实市面上已经有非常多的文章在尝试说清楚,有一张 ...
随机推荐
- 数据库自增 ID 用完了会怎么样?
前言 数据库中的自增 ID 用完了该怎么办? 这个问题可以分为有主键 & 无主键两种情况回答. 有主键 如果你的表有主键,并且把主键设置为自增. 在 MySQL 中,一般会把主键设置成 int ...
- 在GNU Hurd中感受Mach微内核的进程通信(IPC)
什么是GNU Hurd 具体的时间线已经在官方维基页面得到详细描述[0],笔者在此就简单叙述一下.在1983年Richard Stallman开启了GNU项目,目的是创建一个自由的操作系统[1].在接 ...
- ANSYS 导出节点的位移数据
1. 数据保存 确定待提取的节点编号: 获取节点位移变量: 将节点位移变量存储到数组中,用于数据传递: ! 输出对应节点的位移到csv文件 ! 注意同时导入.db和.rst,并切换到/post26模块 ...
- 使用Python和SymPy推导斯特林公式
引言 斯特林公式(Stirling's Approximation)是一种用来近似计算阶乘的数学公式.它是数学分析中非常重要的近似公式之一,尤其在概率论.统计学.物理学等领域中广泛应用.本文将使用 P ...
- 搜索算法1——聊聊dfs与回溯
搜索算法1--聊聊dfs与回溯 目录 1.dfs 的概念 $\ \ \ $1.1 dfs 的概念 2.dfs 的做法 $\ \ \ $2.1 为什么要用 dfs $\ \ \ $2.2 dfs 如何实 ...
- Mybatis的动态SQL的语句
例子. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC &quo ...
- 20241105,LeetCode 每日一题,用 Go 实现两数之和的非暴力解法
题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案,并且你不能 ...
- c#使用内存映射像处理内存一样去快速处理文件
在 .NET Core 中,`System.IO.MemoryMappedFiles.MemoryMappedFile` 类提供了对内存映射文件的支持.通过将文件映射到内存,你可以在应用程序中直接访问 ...
- HarmonyOS运动开发:如何集成百度地图SDK、运动跟随与运动公里数记录
前言 在开发运动类应用时,集成地图功能以及实时记录运动轨迹和公里数是核心需求之一.本文将详细介绍如何在 HarmonyOS 应用中集成百度地图 SDK,实现运动跟随以及运动公里数的记录. 一.集成百度 ...
- 操作系统综合题之“采用记录型信号量机制实现进程INPUT、PROCESS和OUTPUT的同步算法(代码补充)”
1.问题:系统中有有三个进程INPUT.PROCESS和OUTPUT,共用两个缓冲区BUF1和BUF2.假期设BUF1中最多可放10个数据,现已放入了2个数据:BUF2最多可放5个数据.INPUT进程 ...