ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
1、# [js function 中的this](https://www.jianshu.com/p/30cb87fc45c3) 2、# [一眼看穿flatMap和map的区别](https://www.cnblogs.com/yucy/p/10260014.html) >map:map方法返回的是一个object,map将流中的当前元素替换为此返回值; flatMap:flatMap方法返回的是一个stream,flatMap将流中的当前元素替换为此返回流拆解的流元素; 3、# [async await和promise的区别,和使用方法](https://www.cnblogs.com/web-jscss-dabao/p/12884221.html) ~~~ async function timi(res){   let a=await nvm(2)    //这里执行2s //await后面可以跟任何方法,对象   let b=await nvm2(2) //这里执行3s   let c=await nvm(2)  //这里再执行2s   console.log(a,b,c)  //你等7s,才打印出结果 } timi() //执行async方法 ~~~ 4、inserted函数表示当绑定了该指令的元素被插入到dom时候会自动触发 5、# [经典前端面试题: Object.assign 是浅拷贝还是深拷贝?实现深拷贝的方法有哪些?](https://www.cnblogs.com/LVBingo/p/11290637.html) >当对象中只有一级属性,没有二级属性的时候,此方法为深拷贝,但是对象中有对象的时候,此方法,在二级属性以后就是浅拷贝。 6、# [JavaScript 浅拷贝深拷贝之理解及应用场景](https://www.jianshu.com/p/8014db65e520?tt_from=copy_link) >深浅拷贝,都是拷贝对象内的数据到新对象,新旧对象内的数据相同。 1.浅拷贝 只拷贝对象的第一层属性,如果对象中还有对象,只是拷贝的内存地址(引用),两者修改会相互影响。用于对象中都是基本数据类型的情况。 2.深拷贝 拷贝对象的多层属性,如果对象中还有对象,会继续拷贝,使用递归实现。 7、# [ReferenceError: XMLHttpRequest is not defined(解决)](https://blog.csdn.net/Janent168/article/details/108826418) >xmlhttprequest 不是[Node](https://so.csdn.net/so/search?q=Node&spm=1001.2101.3001.7020)内置的,需要单独安装 8、# [浅谈async函数await用法](https://www.cnblogs.com/jeodeng/p/10663869.html) 9、# [es6 ?.与??](https://www.cnblogs.com/qieting/p/15527793.html) 10、@babel/register模块改写require命令,是怎么实现钩子的? >@babel/register模块改写require命令,是通过Node.js中的Module._compile()方法和Module._extensions对象实现钩子的。 当Node.js执行require命令时,会先检查Module._extensions对象中是否存在当前文件的扩展名对应的钩子函数,如果存在,则使用对应的钩子函数处理当前文件。 @babel/register模块在运行时,会将自己添加到Module._extensions对象中,用于处理.js文件的加载。当Node.js执行require命令加载.js文件时,会调用Module._extensions['.js']方法,在@babel/register模块中,这个方法会将当前.js文件的代码通过Babel进行转译,然后再交由Node.js的原生Module._compile()方法进行编译和执行。 @babel/register模块的实现原理就是利用Node.js提供的模块化机制,实现对.js文件的转译,并通过动态添加钩子函数的方式实现require命令的改写。