![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JS
文章平均质量分 68
米儿web
这个作者很懒,什么都没留下…
展开
-
http知识
http组成。原创 2024-04-09 09:26:13 · 187 阅读 · 0 评论 -
手写防抖节流、手写深拷贝、事件总线
head></head><body><script>// 深拷贝函数// 0.如果值是Symbol的类型// 1.如果是原始类型, 直接返回if (!// 2.如果是set类型// 3.如果是函数function类型, 不需要进行深拷贝// 4.如果是对象类型, 才需要创建对象[]: {}// 遍历普通的key// 单独遍历symbolage: 18,friend: {address: {name: "洛杉矶",detail: "斯坦普斯中心"},// mitt。原创 2024-04-05 17:47:16 · 273 阅读 · 0 评论 -
js性能优化
在HTTP中,客户端给服务器端发起请求,并等待响应。请求和响应都遵循相同的格式,区别在于请求来自客户端,响应来自服务器端。一旦TCP连接建立,在通信双方中的任何一方主动关闭连接之前,TCP连接都将被一直保持下去。在HTTP中,所有的WWW文件都必须遵守这个标准,HTTP协议是建立在TCP协议之上的一种应用。HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。HTTP和TCP是互联网上应用广泛的两种协议,其中HTTP是应用层协议,而TCP是传输层协议。原创 2023-12-05 09:04:11 · 147 阅读 · 0 评论 -
js用到的算法
方法:使用JavaScript的数组方法.reduce()来解决这个问题。.reduce()方法在数组中的每个元素上执行一个reducer函数,并返回一个单一的输出值。这段代码首先将原始数组array中的每一项curr中的的键值对作为对象推入累积器数组acc中。然后将每一项的其他属性rowName1rowName2rowName3添加到这个对象中。最后返回累积器数组,得到的结果就是你希望得到的形式。原创 2023-11-27 09:46:39 · 766 阅读 · 0 评论 -
js面试题
为了使用闭包,我们可以简单的将一个函数定义在另一个函数的内部,然后将其暴露给外部,返回这个函数或者是把它传给另一个函数。当在 JavaScript 中使用一个变量时,JavaScript 引擎会首先在当前作用域中查找该变量,如果找不到,它会继续在上层作用域中查找,以此类推,直到找到该变量或到达全局作用域。在JavaScript中,闭包可能会导致内存泄漏,因为当一个函数返回了一个闭包,并且这个闭包引用了外部函数的变量时,即使外部函数已经执行完毕并被销毁,但由于闭包仍然存在,它仍然可以访问外部函数的变量。原创 2023-10-01 19:13:56 · 180 阅读 · 0 评论 -
JS-this知识点、面试题
Persion是构造函数,也就是类,person1,person2是根据类创建出的对象(实例)原创 2023-08-27 19:03:07 · 473 阅读 · 0 评论 -
包管理工具npm
包管理工具npm:Node Package Manager,也就是Node包管理器; 但是目前已经不仅仅是Node包管理器了,在前端项目中我们也在使用它来管理依赖的包; 比如vue、vue-router、vuex、express、koa、react、react-dom、axios、babel、webpack等等;npm管理的包存放在哪里呢?我们发布自己的包其实是发布到registry上面的; 当我们安装一个包时其实是从registry上面下载的包;npm的配置文件是package.json原创 2021-12-02 11:02:34 · 794 阅读 · 0 评论 -
模块化:ESModule、CommonJS
一、CommonJS导出const name = "why"const age = 18function sum(num1, num2) { return num1 + num2}// 1.导出方案 module.exportsmodule.exports = { // aaa: "hahahahaah", // bbb: "bbb" name, age, sum}// 第二种导出方式exports.name = nameexports.age = a原创 2021-11-29 20:16:51 · 454 阅读 · 0 评论 -
进程和线程、浏览器的事件循环、Node事件循环、proxy、reflect、补充promise、async、await,ES8:字符串填充padStart、padEnd,ES9、10、11、12新特性
事件循环宏任务和微任务但是事件循环中并非只维护着一个队列,事实上是有两个队列: 宏任务队列(macrotask queue):ajax、setTimeout、setInterval、DOM监听、UI Rendering等 微任务队列(microtask queue):Promise的then回调、 Mutation Observer API、queueMicrotask()等 二、Node事件循环Node事件循环的阶段事件循环像是一个桥梁,是连接着应用程序的Ja.原创 2021-11-23 17:58:55 · 781 阅读 · 0 评论 -
ES6中class类、类的继承extends、多态、字面量的增强、解构、let/const、字符串模板、函数的默认参数、展开语法、数值、Symbol使用、Set、Map、es7-13总结
一、认识class定义类我们会发现,按照前面的构造函数形式创建 类,不仅仅和编写普通的函数过于相似,而且代码并不容易理解。在ES6(ECMAScript2015)新的标准中使用了class关键字来直接定义类;但是类本质上依然是前面所讲的构造函数、原型链的语法糖而已;可以使用两种方式来声明类:类声明和类表达式// 类的声明class Person {}// 类的表达式var Animal = class {}类和构造函数的异同类的一些特性和我们的构造函数的特性其实是一原创 2021-11-17 11:30:02 · 2300 阅读 · 1 评论 -
JS对象创建-封装、原型、原型链、寄生组合式继承、对象的方法补充
一、创建对象 – 构造函数和原型组合我们在构造函数的方式创建对象时,有一个弊端:会创建出重复的函数,比如running、eating这些函数那么有没有办法让所有的对象去共享这些函数呢?可以,将这些函数放到Person.prototype的对象上即可function Person(name, age, height, address) { this.name = name this.age = age this.height = height this.address = a原创 2021-11-12 09:39:10 · 1202 阅读 · 1 评论 -
JS手写代码:apply、call、bind,认识arguments,箭头函数中没有arguments,纯函数,slice纯函数,splice不是纯函数
一、call函数实现// 给所有的函数添加一个hycall的方法Function.prototype.hycall = function(thisArg, ...args) { // 在这里可以去执行调用的那个函数(foo) // 问题: 得可以获取到是哪一个函数执行了hycall // 1.获取需要被执行的函数 var fn = this // 2.对thisArg转成对象类型(防止它传入的是非对象类型) thisArg = (thisArg !== null &原创 2021-11-08 18:13:31 · 888 阅读 · 1 评论 -
数组中的高阶函数、JS闭包、闭包的内存泄漏
一、数组中的5个高阶函数1.filter: 过滤// [10, 5, 11, 100, 55]// 10 => false => 不会被放到newNums// 5 => false => 不会被放到newNums// 11 => false => 不会被放到newNums// 100 => false => 不会被放到newNums// 55 => false => 不会被放到newNumsvar newNums = nums原创 2021-11-05 17:55:32 · 653 阅读 · 2 评论 -
JS函数执行-作用域链-内存管理
一、函数调用执行过程var message = "Hello Global"function foo() { console.log(message)}function bar() { var message = "Hello Bar" foo()}bar()代码执行都需要加入调用栈(ECStack)中执行,所以先有调用栈编译阶段,就会先创建一个GO对象(Global Object),里面有window、string等等除了有本来的还要对代码进行编译,会发现还.原创 2021-11-03 21:23:08 · 407 阅读 · 0 评论