2021/12/6

上午:
Users/addone/index.js
在做毕设的时候看到了reactive函数,原来reactive函数和ref用法差不多,都是响应式数据,但是
ref是用在基本数据类型的,reactive是用在复杂数据类型的。
什么是响应式数据呢,就是vue里的数据发生变化的时候,ui也发生变化。
发生知道vue是html标签属性的值后,知道vue和html各自的职责后,好像很多东西都简单了起来。
具体链接:https://www.jianshu.com/p/ba1169fa2c97
还有一个Object.assign,我以前是把它当成克隆来着,然后重新去看了一下代码案例:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
发现 Object.assign(addForm, defaultFormData);,其实是把addForm清空了,因为defaultFormData
是account:"" password:""

数组的克隆就是为了不涉及到引用,因为一旦涉及引用,数据之间互相干扰就会很麻烦了。
因此要学克隆。
浅克隆和深克隆我觉得这个链接讲得很清楚啦:https://juejin.cn/post/7028133052882616333

深克隆用的这个方法,JSON.parse(JSON.stringify(obj));感觉好聪明啊。先变成字符串再变回对象,这样
是新的引用地址了捏。
然后就是 JSON.stringify的妙处了,看了一下文档后,
刚刚用了一下console.log(JSON.stringify(addForm));
然后addForm的属性和值在控制台就看得到啦,如果单纯console.log(addForm),
最后获得的只是对象的地址罢了,要给服务端交流的话,要是要用JSON.stringify()呢。

在看webpack的时候看到devServer,之前不知道是怎么用的如今看了一下文档也知道了,
https://webpack.wuhaolin.cn/1%E5%85%A5%E9%97%A8/1-6%E4%BD%BF%E7%94%A8DevServer.html

下午:
关于vue-cli中怎么使用mockjs模拟数据:
链接:
https://blog.csdn.net/weixin_40141473/article/details/105086901?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163876812816780357297159%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=163876812816780357297159&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-105086901.pc_search_es_clickV2&utm_term=vue-cli+mock&spm=1018.2226.3001.4449
如果函数1里包了return 函数2,那么按照逻辑来讲,函数1就是函数2的进一步封装。
比如expos const get = (url,data={})=>{return axios.get(getURL(url…

不知道项目里的cb是不是ctx.body呢。

(知道promise对象长啥样,知道await+的是啥,返回的是啥。
看代码的时候发现对哪个语法不熟就得去百度看文档,很有用的一定要去看。
比如这个await,我看到它如何重写promise代码的,就瞬间明白await的好处在哪里了。
要多看代码+解析这种的。
链接:https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Asynchronous/Async_await
我感觉所谓的promise对象就是一个函数对象。
比如 : new Promise(function(resolve,reject)…
这就是一个函数对象嘛。
它们说then也是promise对象。
看then 。也是 then(function(json) return json.post)…
看它和new Promise(function(resolve,reject)
对比可以总结出,只要长 abc(function()—) 这一整个整体就叫promise对象。
一直对promise很模糊,但是现在 观察了,发现 then是promise对象就是因为它后面可以接
function(xx) xxx,所以then就是promise对象了。
同理,说啥await也是promise对象,其实好像不是的,而是await 可以+返回promise对象的函数。
就是说 await fetch(‘coffee.jpg’) – 这个 返回的不就是 .then xxx嘛,所以就是
!!!await + 返回promise对象的函数,然后得到的值就是,这个promise里面的函数的参数。
链接:https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Asynchronous/Async_await

之前看不懂的前后端交互:(终于看懂了)
当看到await + 返回promise对象的函数这种语句时,先找这个函数返回的promise对象在哪里,接着
根据这个对象,就知道await xx =什么值。
比如一直烦恼我的 为什么 await user.remove () 的结果会是res,然后经过我一步步找这个
user.remose()的promise对象是axios.del().then!!!
axios.del().then(res=>{})----经过语法判断,这个promise对象的参数不就是res了嘛,
所以res就是awit user.remove()返回的结果呀。
也知道为什么要 return axios.post()了,为什么要有return,因为这样才是返回了then。
经理解以后直接用 什么 await User.deleteOne 都知道返回的是结果啦。就是因为理解了这个函数返回
的promise对象都是then(xx),xx都是res(包括后端那个用mongoose.model的数据库操作),也是这样。

之前在代码中老看到有给变量设置为null的语句,以前不大懂什么时候要用,现在发现原来是
js的垃圾回收机制,具体链接看:
https://cloud.tencent.com/developer/article/1852932
看这个链接里面的引用计数,还有skill=null,就懂啦。原来是为了解除全局与局部变量之间的引用关系,
实现垃圾回收。
但是如果闭包里面的变量没有这层关系,那怎么实现垃圾回收呢,呃,其实跟全局变量的区别不过
是设置null的位置罢了。局部的话那就再不适用局部的时候删除就性了。
看一下链接:
https://blog.csdn.net/yiyueqinghui/article/details/96453390
这个var id = el.id; el=null.(为啥要直接id,而不是el.id,就是因为要解除引用关系,要不然el还是
存在被引用的情况,那就还是没有实现回收。
so,垃圾回收机制很多次都是针对引用的情况。
!!!(其实我觉得想知道闭包造成的内存泄露,首先要明白什么是垃圾回收机制,因为闭包造成的内存
泄露其实跟垃圾回收机制的标记清除有关系,那些被标记了之后又离开环境的,会被回收,
而那些被标记了之后却没有离开环境的,就会造成内存泄漏。
比如函数1里面有函数2,函数2需要被调用,但是只调用了函数1,此时函数2以及函数2用到的函数1的
外部变量都被标记了但是没有离开环境,因此会造成内存泄漏~)

关于def和async,用在script标签里的。
链接:https://www.jianshu.com/p/c7c331ea4fe8

关于用javascript创建对象的几种方式:https://blog.csdn.net/JINGinC/article/details/121305636

promise实现异步编程,突然有一刻就懂了什么叫做链式调用,就是f1().then(f2).then(f3),
f1的回调函数是f2,f2的回调函数是f3,这样子写的话流程就很清楚啦~
链接:https://blog.csdn.net/q759859479/article/details/80770315(看那个promise就行)

关于异步编程我觉得这个写得很好很好!!!以前不是管两个宏任务嘛,就靠理论,然后这个
看着动态图才知道setTimeout这些是在等主任务的栈都出来了,看到栈里面什么都没有才能进去。
以前还老是在想发送请求了回来的时候怎么决定在哪里,原来是不知道这个算法的原因。
还有一个就是javascript是单线程,这个我是知道的,但是,浏览器是多线程!!
链接:https://www.zhihu.com/question/66091622
这个林京讲得很好捏。

这个前端js面试题,虽然200+道,很多,但是慢慢看总能看完滴,链接:
https://cloud.tencent.com/developer/article/1802691
(然而不仅没有两百道还重复了hhh)

顺带说一下,更新了2021/11/20中关于v-for,key的说明。

上一篇:JUC-await和signal


下一篇:Promise + Async&Await + Array.reduce + 函数递归 解决网络/接口请求的依次/排队不间断间隔访问