JavaScript 中的深拷贝
什么是深拷贝 对象的深拷贝是指其属性与其拷贝的源对象的属性不共享相同的引用(指向相同的底层值)的副本。因此,当你更改源或副本时,可以确保不会导致其他对象也发生更改;也就是说,你不会无意中对源或副本造成意料之外的更改。这种行为与浅拷贝的行为形成对比,在浅拷贝中,对源或副本的更改可能也会导致其他对象的更改(因为两个对象共享相同的引用)。 在 JavaScript 中,标准的内置对象复制操作(...
什么是深拷贝 对象的深拷贝是指其属性与其拷贝的源对象的属性不共享相同的引用(指向相同的底层值)的副本。因此,当你更改源或副本时,可以确保不会导致其他对象也发生更改;也就是说,你不会无意中对源或副本造成意料之外的更改。这种行为与浅拷贝的行为形成对比,在浅拷贝中,对源或副本的更改可能也会导致其他对象的更改(因为两个对象共享相同的引用)。 在 JavaScript 中,标准的内置对象复制操作(...
cookie 是什么? HTTP Cookie(也叫 Web Cookie 或浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据。 浏览器会存储 cookie 并在下次向同一服务器再发起请求时携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器——如保持用户的登录状态。 Cookie 主要用于以下三个方面: ...
HTTP缓存机制 是浏览器缓存机制的基础。 浏览器缓存的过程 强制缓存优先于协商缓存进行,若强制缓存(Expires 和 Cache-Control)生效则直接使用缓存,若不生效则进行协商缓存(Last-Modified / If-Modified-Since 和 Etag / If-None-Match),协商缓存由服务器决定是否使用缓存,若协商缓存失效,那么代表该请求的缓存失效...
学习 JS 近三个月,从看不懂基本回调函数的实现,到慢慢了解 Promise 和 Async/Await,再到在项目中实际使用它们,我自认为我对异步回调函数已经”差不多了解”了。但是面试的时候被问及一些细节,我的大脑就一片空白。今日认真阅读 MDN 文档中与之相关的部分,并记录下我认为值得再回顾的内容。有感兴趣的朋友也可以收藏备忘。 Promise 是什么? Promise 是一...
组件 组件定义 Vue:模板+样式+脚本,和 HTML 基本一致,易理解 React:写 React 就是写 js,有扩充的 JSX 语法 组件结构 Vue:defineProps API 在 setup 函数中被编译。 <!-- App.vue --> <script setup> import { ref } from 'vue' import Blo...
响应式原理/双向数据绑定 vue2:ES5 Object.defineProperty() 对属性进行劫持,结合发布订阅模式的方式来实现的。 具体流程是: 组件实例化时,Vue 遍历组件 data 对象中的所有属性,并使用 defineProperty() 为每个属性创建 getter 和 setter 函数 当模板中访问到某个数据时,Vue 通过 getter 进行依赖收集...
从三月中旬开始,一边从头学 JavaScript 一边面试,已遇到了若干次的 this 指针问题,似乎我从来只是靠猜。所以我想通过写笔记的方式来彻底搞懂 JS 中的 this。 红宝书(JavaScript高级程序设计)的解释 函数内部 this 另一个特殊的对象是 this,它在标准函数和箭头函数中有不同的行为。 在标准函数中,this 引用的是把函数当成方法调用的上下文对...
在 JavaScript 中,可以通过数组的方法来模拟栈(stack)和队列(queue)的操作: 模拟栈(Stack) 栈是一种后进先出(LIFO, Last In First Out)的数据结构,可以使用数组的以下方法来模拟: 入栈(push)操作:使用 Array.push() 方法将元素添加到数组的末尾。 ...
引言 最近参加各厂笔试,常有设计模式出没。此前也零碎地接触过一些设计模式如工厂模式、单例模式等,那就凑空将它们都认识一遍吧。