彻底搞懂深浅拷贝及其实现

什么是深浅拷贝 想当初,我一直以为赋值也算是浅拷贝…… 赋值 对基本类型来说,赋值后就是两份栈内存中的独立数据,赋值后互不影响;对引用类型来说,赋值后仅是两份栈内存中的地址,地址指向堆内存中的同一份数据,赋值后相互影响。 实际上,浅拷贝和深拷贝都是对于引用类型来说的,比如拷贝一个对象或数......

async / await 的用法回顾及一点思考

async / await 用法巩固 async / await 是 Promise 的语法糖,是基于 Promise 实现的。作用是使得 Promise 的用法更加简洁明了,看起来像书写同步代码一样,避免了 then 方法的链式调用,更加直观。 async async 关键字表明其后面的函数内部包含异步操作。同时需要注意的是,async 会将其后面的这个普通函数的返回值包装成一个 Promise 对象,以 Promise.resolve() 的形式返回。......

一些笔记

微信小程序API的回调函数中this问题 微信小程序提供的API,大部分是基于回调函数的,只有少部分支持以Promise风格调用。作为参数,回调函数一般有success fail complete三种,分别对应接口调用成功、失败、结束(不论成功或失败)。 问题 三种回调函数的形式既可以是普通函数......

微信小程序开发学习 (三)

自定义组件 自定义组件的思想和Vue的差不多,都是为了提高代码的复用率。自定义组件一般放在Components文件夹中,其构成和普通页面的也是一样,分为wxml、wxss、js、json。 引用 自定义组件的引用分为全局引用和局部引用。局部引用是在页面的json配置中引用: "usingComponents": { "test-component": "../components/testComponent/testComponent" } 引......

微信小程序开发学习 (二)

声明式导航 跳转页面可以使用<navigator>组件进行声明式导航,需要指定url和open-type属性,url需要以/开头。 若要跳转到的页面为tabBar,则open-type为switchTab。 <navigator url="/pages/message/message" open-type="switchTab"&g......

微信小程序开发学习 (一)

小程序开发与普通web开发的区别 由于小程序运行在微信环境中,所以不能调用浏览器的DOM、BOM的API,但是可以调用微信提供的各种API,如地理位置、扫码、支付等…… 小程序项目的基本组成结构 pages:用来存放小程序的所有页面 utils:用来存放工具性质的模块 app.js:小程序......

Vue3 学习 其他的 CompositionAPI 与其他改进

shallowReactive与shallowRef shallowReactive()相对于Reactive()来说,只处理最外层属性的响应式(浅响应式)。shallowRef()相对于Ref()来说,只处理基本数据类型的响应式,不处理对象类型。 作用在于节约资源,提高性能。 rea......

Vue3 学习 常用的 CompositionAPI

Vue3 One Piece 因为有Vue2的基础,所以仅记录Vue3改变和新增的地方~ vue-cli脚手架的小变化 Vue3在main.js中的引入方式发生变化,引入的不再是Vue构造函数,而是一个名为createApp的工厂函数。 创建的实例对象app也要比Vue2的vm更“轻”,少了许多属性和方法。 //......

Vue2 后台管理项目总结 (二)

对象的深度拷贝与深度监视 在写项目的用户管理页面时,发现在模态框中编辑用户信息,变动会即时地同步到用户列表中,而且虽然没有保存编辑,但列表中的变动依然存在,这一bug实数诡异。 经过排查,最后发现是由于js中赋值语句默认为浅拷贝,即对对象这种引用类型来说,只拷贝了其地址值,两个变量都......