为什么有的函数要用 call,有的却完全不用?
——从 this 设计本质理解 JavaScript 方法分类 在学习 JavaScript 的过程中,很多人都会卡在一个问题上: 更进一步的问题是: 本文将从设计层面而不是“记规则”的角度,彻底解释
该标签下已收录 79 条沉淀(79 篇文稿)
——从 this 设计本质理解 JavaScript 方法分类 在学习 JavaScript 的过程中,很多人都会卡在一个问题上: 更进一步的问题是: 本文将从设计层面而不是“记规则”的角度,彻底解释
本文以风趣的笔调讲解 React Fiber 架构,结合代码与图示,深入解析 Fiber 的链表结构、三指针关系及可中断更新机制,帮助读者理解 React 如何实现高效的任务调度与渲染流程。
参考:《React 技术揭秘》 by 卡颂 一、前言:React,不只是“快” React 团队做架构升级,从来不是为了单纯的“更快”。 如果只是性能,他们完全可以优化 reconc
一、React15:一个“全力以赴但不会刹车”的系统 React15 的架构只有两层: 🧩 Reconciler(协调器) :负责计算哪些组件要更新; 🖼️ Renderer(渲染器) :把更新同步到
一、开场:今天我们聊点“时间的事” 大家好,我是小dora。 今天咱们不讲API、不贴文档,而是聊聊 React 背后那件“看不见的事”——它是怎么让时间为UI服务的。 你可能听过 React 的官方
——小Dora 的 JavaScript 修炼日记 · Day 9 🗂 目录 Map 与 WeakMap:表面区别 vs 内存差距 什么是弱引用?为什么 WeakMap 是弱引用? V8 内存结构:堆
🌀 小Dora 的 JS 修炼日记 · Day 7 🌟 开篇:四大函数机制是怎么被 JS 引擎执行的? new:你以为只是创建对象?其实背后隐藏了 V8 的 Hidden Class 分配 + 构造绑
🌀 小Dora 的 JS 修炼日记 · Day 6 🍵 一、前情提要:JS 为啥搞异步? JavaScript 天生是单线程的。啥意思?就是说它一心只能做一件事。 但现实世界太残酷:网络请求慢、I/O
——小Dora 的 JavaScript 修炼日记 · Day 5 前几日你学了作用域、上下文、闭包…… 今天要解封的,是 JavaScript 的江湖绝学: 🌀 原型 & 原型链 这不是江湖新词,它
小Dora 的 JavaScript 修炼日记 · Day 4 🧨 前言:闭包不是语法糖,而是作用域的灵魂延续 闭包是 JS 世界的“神秘武器”,它能穿越函数的生命周期、记住那些早该释放的变量,让你:
——小Dora 的 JavaScript 修炼日记 · Day 3 🐒 一、为什么你总是搞不清 this? 因为 JS 的 this 绑定机制像极了感情世界: 有时候你以为它属于你,其实它根本不认识你
昨天我们和 var / let / const 三兄弟斗了个昏天暗地,*你写的代码到底是怎么一步步运行的?谁能访问谁?变量从哪儿冒出来?为什么闭包能穿越时间的缝隙记住变量?
🚧 开场:把你困住的误解先拆了 你是不是也以为: 答案是——不是!不是!真的不是! 让我们用这篇文章,从「误解」出发,到「掌握精髓」收官,完成一次技术脑内革命! 🏷️ 一、reduce 是什么?——数
今天是小Dora正式踏入 JavaScript 的第一天,目标明确:未来成为一名**高级前端工程师**。第一关,就是打通【变量声明】这座看似简单、实则杀机重重的迷宫。
🧠 一、什么是 this? 在 JavaScript 中,this 是一种运行时绑定,它代表的是函数被调用时的上下文对象。 不是定义位置、不是写在哪儿的对象、不是函数自己。 只有一个真理: 🧭 二、t
大文件上传,其实是前端对异步编程掌控力的一次深水区测试。 你以为只是拖个文件框、调个接口而已? 真到了项目里,面对几个 G 的文件,老板一句话: > “不能卡、要能重传、并发别炸服务器、还能暂停”,
第一章:失踪的目标值 “哆啦A梦,数学卷子上有个神秘问题——老师说数组里藏着两位同学,他们的成绩之和是 100,问我他们是谁!” 大雄紧握试卷,皱着眉头看着: “我只能想到最笨的方法:把所有组合都试一
JavaScript 中的 for...in 和 for...of,名字像,功能却天差地别。 混用?代码能跑但极易出 bug。 想记住?咬牙背十次不如一次理解 + 巧记 + 联想。 本篇一文到底,帮你
🧭 前言:你写功能,他们在聊“系统扛不住了” 身为一名前端,你也许每天写的最多的词是 onClick,提 PR 最多的改动是“按钮颜色和边距”。 可就在你写按钮时,身后的后端小哥和运维师傅经常蹙眉低语
🍿 一、三兄弟登场:不同对象,不同任务 名称 作用对象 是否修改原对象 返回类型 功能简述 splice 数组 ✅ 是 被删除元素数组 原地删除元素并可插入新元素 slice 数组 / 字符串 ❌ 否
引言 JavaScript 作用域规则并非只是“变量在哪定义就在哪有效”这么简单。真正的理解要深入到 V8 引擎是如何在底层解析、构建、优化和执行这些作用域的。本文将从词法作用域的编译期构建、执行上下
很多人学 JavaScript 的时候,写下 var a = 2; 的时候,心里只是想着“定义一个变量并赋值”,然后就继续写下去,完全没有意识到这一行代码背后,引擎、编译器和作用域三者正进行一场精密的
🚀 前言 JavaScript 中的对象与类系统建立在 原型链(Prototype Chain) 上。所有对象的属性查找和继承机制都离不开原型链的支持。虽然这个概念在大多数教程中被简单地理解为“对象继
📌目录 浏览器事件模型的设计动机:一场分布式通信架构演化史 事件捕获与冒泡阶段的底层实现与执行栈原理 为什么“目标阶段”不提供独立监听? 事件委托的正确范式与性能陷阱 React / Vue 是如何劫
你以为的“异步”,可能只是“异象” 很多人觉得异步模型是指 setTimeout、Promise、async/await 的执行顺序问题。但我们要讨论的是: 异步是如何调度的?
JavaScript垃圾回收机制深度解析与内存管理艺术 一、内存管理基础架构 1.1 堆内存拓扑结构 JavaScript引擎采用分代式堆内存管理,V8引擎将堆划分为多个空间: 各空间采用不同内存页管
一、打破黑箱:当我们执行 new Character() 时,究竟在举行什么仪式? 一个被忽视的恐怖场景: 这个经典错误暴露了 new 的核心作用:创建独立的作用域沙箱。没有 new,构造函数内的 t
引言:被node_modules支配的恐惧 "你的node_modules有多大?"这个灵魂拷问总能引发开发者会心一笑。当项目规模达到500MB时,npm install需要喝三杯咖啡的时间;当依赖层
你可能已经在很多地方听说过闭包这个词,尤其是涉及到 JavaScript 的作用域和异步操作时。闭包是 JavaScript 中非常核心的概念,然而它又非常容易让开发者感到困惑。今天我们就来深入剖析闭
前端内存泄漏:你的JS代码在偷偷“吃”内存! 你有没有遇到过这样的问题:你的Web应用在刚启动时运行流畅,但使用一段时间后,变得越来越卡?任务管理器一打开,浏览器占用的内存高得离谱,就像一头无底洞的野
背景:为什么我们需要展示十万条数据? 在开发电商后台、订单管理系统或数据报表时,我们经常会遇到一个需求:展示超大规模的数据列表。 产品经理可能会说:“我们需要展示十万条订单数据,方便业务人员快速筛选和
《JavaScript高级程序设计》——第四章:变量、作用域与内存管理 大家好!我是小哆啦,欢迎回到《JavaScript高级程序设计》的读书笔记大本营!在这章中,我们要聊的是两个让人头疼又迷人的话题
TypeScript 类型大揭秘:从灵活到严苛,每个类型背后的设计哲学 TypeScript 是一门静态类型语言,但它的类型系统并非一味强调“严苛”。在这个系统里,有些类型如 any、unknown、
TypeScript 的“不变”哲学:从代码到工程化的深度探索 TypeScript 不仅是 JavaScript 的超集,更是前端工程化中的一把利器。const、readonly、枚举、常量枚举、接
JavaScript 高级程序设计 读书笔记(第三章) 第三章:基本概念的深度探索 在 JavaScript 的世界里,第三章的内容可以说是奠基石,它决定了你对这门语言的基本理解。如果你曾经因为 nu
异步编程的“三角恋”:如何在 Promise、async/await 到 RxJS 中优雅地处理多个请求的依赖? 引言 在前端开发的日常工作中,处理多个异步请求是再常见不过的需求了。无论是从服务器获取
引言 今天去了一家小厂面试,面试官居然给了我一个“神仙题”: “如何在同一个浏览器窗口下,只要登录一个网站(比如 a.com),其他网站(如 b.com 和 c.com)就能自动识别用户身份?” 我当
《从洗牌算法到前端工程化:如何用JavaScript实现真正的随机排序并应用到实际项目中》 正文: 1. 引言:为什么前端开发者需要关心随机排序? 想象一下,你正在开发一个电商网站,用户每次进入首页时
Object.defineProperty 与 Proxy:谁才是 JavaScript 属性管理的 “终极 Boss”? 引言:属性管理的 “华山论剑” 在前端的 “江湖” 里,JavaScript
前端渲染风云:CSR 与 SSR 的深度较量 引言 在前端开发的广袤宇宙中,页面渲染犹如一颗璀璨而关键的星辰,它决定着用户与网页交互的第一体验,也深刻影响着网站在搜索引擎中的 “江湖地位”。其中,客户
客官,准备好进入 JavaScript 的奇妙世界了吗? 亲爱的客官,今天我们有一个充满悬念和挑战的 JavaScript 题目,带你穿越函数、原型、继承,甚至还要掌握如何在魔法世界中与 new 打交
小哆啦探秘《JavaScript 高级程序设计》:开启网页魔法初体验 今天小哆啦翻开了《JavaScript 高级程序设计》这本书,本以为会是一场枯燥的知识 “苦旅”,没想到第一章和第二章就像打开了一
函数式编程:从理论到现实的深度解析 函数式编程(FP)自20世纪50年代以来一直是计算机科学中的一个重要领域。在过去的几年中,随着JavaScript、Scala、Elixir、Rust等语言的流行,
揭秘数据传递与监听:从 JavaScript 到 Vue 的背后 1. 从 JavaScript 开始:传值与传地址的奥秘 在现代 JavaScript 开发中,理解传值与传地址之间的区别是非常重要的
《深入实现事件发布-订阅模式:从基础到优化》 引言 在软件开发的世界中,随着应用程序规模的扩大,模块化、解耦和可扩展性变得尤为重要。事件驱动架构(Event-Driven Architecture,
JavaScript 原型链的潜在“陷阱”:你知道多少? 作为 JavaScript 开发者,你可能早已熟悉原型链的概念——它是我们理解继承和共享功能的基础。但,和所有神秘的技术一样,原型链不仅仅是个
破解浏览器渲染“死锁”:CSS与JS如何影响页面加载速度? 在这个快速发展的Web世界里,性能是开发者们永恒的追求。当你打开一个网页,可能会注意到一些页面加载特别慢,甚至产生短暂的“白屏”,你有没有想
《异步世界的魔法:解密Promise中的“值穿透”,让你的异步控制更上一层楼》 你知道吗?在 JavaScript 的异步编程世界中,有一个让人又爱又恨的魔法——值穿透。这个魔法就像你在故事里找到的“
"JavaScript 执行上下文:一场代码背后的权谋与博弈" 假如 JavaScript 是一场王朝剧,那么执行上下文就是深藏幕后、操控全局的枢密院。变量、作用域、this,甚至你写的每一行代码,都
从“偷懒神器”到“时空穿梭机”:揭开 ES6 对象扩展、Generator 与异步魔法的终极奥义 在编程的世界中,ES6 为我们带来了多个令人惊叹的特性,这些特性不仅改变了我们编程的方式,还对我们如何
CSS加载与页面阻塞:看似平凡,背后却藏着优化的艺术 引言:CSS阻塞?你所忽略的页面性能杀手! 你曾经是否在浏览器打开一个网页时,发现页面内容加载得有些慢?或者,你是否曾经听到过一句话:“CSS加载
z-index 失效的真相:你可能忽视了这些关键细节! 你是不是曾经遇到过这样一个糟心的场景:明明为元素设置了 z-index,却发现它依然“躺”在其他元素下方?这究竟是哪里出问题了?别担心,你不是唯
《CSS 布局的四大宗师:破解 BFC、IFC、GFC 和 FFC 的深层奥秘》 在 CSS 的江湖中,布局问题犹如无形的桎梏,困扰着每一位前端开发者。有人为浮动塌陷而抓狂,有人被复杂的响应式布局逼得
从偏差到巅峰:小哆啦与 h 指数的较量 有一天,小哆啦发现科学城最顶级的研究员们都有一个共同的荣耀——他们的 h 指数。听说 h 指数越高,学术影响力越大!她满怀信心地对自己说:“我的学术成果也不赖,
从卡顿到丝滑:揭秘 requestAnimationFrame 的魔力 你有没有遇到过这样的场景:页面上的动画看起来不流畅,画面有时一跳一跳,甚至在你点击或滚动时也感觉迟钝。别担心,这不全是你的代码问
一探究竟:如何高效提取ULL中的当前参数,实现性能与精度的完美平衡 你是否在开发过程中,遇到过那些复杂的、动态变化的URL?每次需要从中提取参数时,你的代码是不是开始变得杂乱无章,难以维护?特别是在单
玩转随机数:用 JavaScript 掌控不可预测的魔力! 当计算机遇上“随机”,我们能做什么? 你曾想过在生活中拥有“超能力”吗?比如,可以预测下一个天气变化,或是猜中下一个彩票号码?虽然我们无法真
JavaScript 数组去重:告别重复,打造完美数据! 有没有遇到过这样的困扰:你处理的数据中,明明是几百条记录,却有很多完全重复的元素,冗余的数据让人头疼!如果你正在为此烦恼,别担心,今天我们将带
JavaScript 数组操作中,有一个看似简单却非常强大的方法——unshift() 。它能帮助我们将元素添加到数组的开头,简单高效,让数组操作更灵活。然而,这个小小的函数背后,却隐藏着许多值得探索
ES6问题总结 1、let和const和var的区别 (1)块级作用域: 块作用域由 { }包括,let和const具有块级作用域,var不存在块级作用域。块级作用域解决了ES5中的两个问题: 内层变
1、JavaScript有哪些数据类型,说一下他们的区别。 JavaScript共有八种数据类型,分别是 Undefined、Null、Boolean、Numbe
小哆啦闭关修炼已久,潜心攻读专业秘技,方才下山考研本欲大展宏图,怎奈山河虽壮志难酬,终是觉察考研无望。思来想去,不若弃考研之念,重拾敲代码之道,复盘前端奇术,以备闯荡职场江湖。
一、基础类型 TypeScript 的基础类型包括布尔值、数字、字符串、数组、元组、枚举、任意值、空值、Null、Undefined、Never、以及类型断言。 类型 描述 用法和示例 布尔值 表示逻
1. 边框法: 使用一个具有透明边框的元素,并隐藏不需要的边框,以形成一个三角形。 2. 伪元素法: 使用:before或:after伪元素来创建三角形。 3. CSS3 clip-path: 使用c
前段时间,小哆啦在工作之余,总感觉`vue`会用还是不是很了解,于是小哆啦决定总结一波,来深度复习一下。复习完之后小哆啦也会跟着大佬去学习`vue`的源码分析,在总结的时候小哆啦也尽量去理解大佬的设计
BOM(Browser Object Model)即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是 window。 BOM 由一系列相关的对象构成,并且每个对象都提供了很
object常用的API 思维导图 大纲 方法 返回类型 ECMAScript 版本 描述 Object.assign() 对象 ES6 将一个或多个源对象的所有可枚举属性的值复制到目标对象中。 Ob
前几天小哆啦总结了字符串常用的`api`,忽然小哆啦想到作为一名前端攻城狮数组的`api`必须得多多了解顺便就总结一下数组中常用的方法,如果有什么不对的地方期待大家批评指正。
JavaScript 常用设计模式 一、构造器模式 构造器模式(Constructor Pattern)是一种常见的设计模式,用于创建对象。它在JavaScript中广泛使用,特别是在创建自定义对象和
字符串常用方法 先看思维导图 1、 获取字符串长度 JavaScript中的字符串有一个length属性,该属性可以用来获取字符串的长度:(这个很简单,大家经常使用)z` 2、获取字符串指定位置的值
先念口诀:箭头函数、new、bind、apply 和 call、欧比届点(obj.)、直接调用、不在函数里。按照口诀的顺序,只要满足前面某个场景,就可以确定 this 指向了
实现顶部100px的盒子高度自适应布满浏览器页面 1.flex 布局 忽然小哆啦就有问题就来了 2.calc()函数 今天就分享到这里啦,还有其他实现方式的可以评论区见:cake:
理解函数柯里化 高阶函数 1. 接受函数作为参数 高阶函数可以接受一个或多个函数作为参数。这样的函数通常用于执行传入的函数,或者基于传入的函数执行一些逻辑。例如: 2. 返回函数(闭包) 高阶函数可以
JS的基本数据类型和引用数据类型内存存储 栈和堆的特点和区别 栈(stack) :栈会自动分配内存空间,会自动释放,存放基本类型和引用数据类型的变量 所有在函数/方法中定义的变量都是放在栈内存中。
css盒中的百分比。快来看看你会不会。在CSS中,百分比值通常是相对于元素的包含块的宽度计算的。这是因为宽度是一个水平属性,而垂直属性(如高度)的百分比通常是相对于元素自身的高度计算的。
Stay Connected via Open RSS
「不错过每一纸书。」通过开放标准的 RSS / Atom 协议,零算法追踪、无广告干扰,在任意阅读器中自由订阅本站的最新深度技术解析。
Letters & Conversation · dorabighead
无论是关于技术长文推演、系统设计探讨、勘误指正,还是纯粹的生活碎念共鸣,都非常欢迎随时来信。通常会在 24 小时内亲启并真诚回复。
愿你的每一份心意与鼓励,都能化作深耕技术底层、推敲文字细节的温暖动力。
微信扫一扫 · 随心支持