随笔分类 - js笔记(基础+练习)
切忌好高骛远,眼高手低。
摘要:正则匹配基础 正则表达式它是js内置的一个对象,它的构造函数是RegExp,可以通过构造函数或者字面量这两种方式创建正则表达式. 正则表达式的两个方法 test()方法,用于验证某个字符串是否符合这个正则表达式规则; exec()方法,用于根据正则表达式去字符串中提取符合要求的字符; 正则表达式修饰
阅读全文
摘要:任何颜色都是由三种最基本的颜色叠加形成的,这三种颜色称为三基色,三基色是“红”、“绿”、“蓝”三种颜色; 在网页上要指定一种颜色,就要使用RGB模式来确定,方法是分别指定R/G/B,也就是红/绿/蓝三种基色的强度,通常规定,每一种颜色强度最低为 0,最高为255,并通常都以16进制数值表示,那么25
阅读全文
摘要:可以通过将其转化为blob对象,添加到a标签或iframe标签中来模拟下载;如果是在项目中使用,我们需要对请求返回的数据进行处理,这里我们需要把responseType对象格式设置成blob。这里直接用axios请求 function downloadFile(id){ axios.get(`/ap
阅读全文
摘要:使用原生方法保存文件到本地 基本流程 确定要保存的文本、保存格式及保存文件类型; 根据保存格式生成 url链接,设置文件的下载地址; 创建一个 a 标签(即a标签指向的就是我们要保存的文件); 给 a 标签添加点击事件,下载文件到我们指定的地址; 释放url链接; 实现方式 1,document.c
阅读全文
摘要:URI: Uniform ResourceIdentifiers即通用资源标识符。 有效的URI中不能包含某些字符(例如空格),URI编码方法就可以对URI进行编码(UTF-8编码), Global对象的encodeURI()和encodeURIComponent()方法可以对URI进行编码(enc
阅读全文
摘要:url >base64 将图片转换为base64位编码后,图片会跟随代码(html、css、js)一起请求加载,不会再单独进行请求加载,可以防止由于图片路径错误导致图片加载失败的问题; 转换思路: url -->img -->canvas -->base64 // url: 图片链接; functi
阅读全文
摘要:base64加密解密过程 Base64会使用一串固定编码: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ 加密过程 想要使用Base64加密,原文长度必须是3的倍数。如果原文不是3的倍数就填充其他符号来凑足成3的倍数
阅读全文
摘要:> JavaScript运行机制:JavaScript是单线程的,它运行的环境般为浏览器或者Node,单线程同一个时间只能做一件事,在JavaScript运行的时候,主线程会形成一个栈(调用栈/执行栈),这个存储函数调用的栈结构遵循先进后出的原则。 ### 任务执行模式:同步模式(Synchrono
阅读全文
摘要:前提:javascript中的数据类型和判断方法: 数据类型 Boolean,Number,String是原始值boolean, number, string的包装类型,可以通过new创建对应的原始值 值类型:undefined, number, string, boolean; 引用(对象)类型:
阅读全文
摘要:js中的this是一个指针型变量,它动态指向当前函数的运行环境,它固定不变的,而是根据调用的上下文(执行时环境)改变而改变; 不同使用条件下this 的指向 在全局执行环境中(在任何函数体外部)this都指向全局对象globalThis,(在浏览器中全局对象为window); 在方法中,this 表
阅读全文
摘要:首先我们必须清楚这两种模式都是设计模式,而不是某种语言的专属; 观察者模式(Observer) 概念理解 观察者模式是一种一对多的依赖关系的行为设计模式,让多个观察者对象监听一个主题对象,当主题对象发生变化时,它的所有观察者对象都会收到通知并自动更新。它可以让多个观察者对象同时监听一个主题对象,当主
阅读全文
摘要:扁平化就是对数据结构处理,把树状的结构平铺开来,变成链状的,这个过程是一定会用到循环的,我们要判断当前数据是否有嵌套元素。 对象扁平化 把对象里的数据平铺成一个个键值对的结构 function objFlat(data) { let result = {} //recurse函数的两个参数分别为当前
阅读全文
摘要:使用昨天练过的Promise来封装一个函数,调用这个函数可以控制并发任务数量,避免过多任务同时执行,多余的任务放在等待队列里,等执行线程空出来后会取出等待队列里的任务执行; function limitTask(taskList = [], limit = n) { return new Promi
阅读全文
摘要:Promise 是异步的一种解决方案,有reject、resolve、then、catch、all、finally等方法。网上有很多关于Promise的优秀文章,深入浅出,多看看它们的原理和使用会茅塞顿开,但是最重要的还是自己动手敲,即使你只实现一部分,剩下的就能举一反三。 类的方式实现 class
阅读全文
摘要:AJAX实现过程 //1,创建对象 let xhr = new XMLHttpRequest() //2,初始化http请求参数(请求方法,请求路径,是否异步) xhr.open(method, url, true) //3,发送请求(params是要发送的参数,如果不止一个参数,可以写成对象结构)
阅读全文
摘要:函数柯里化 柯里化 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数;目的是为了缩小适用范围,创建一个针对性更强的函数,核心思想是把多参数传入的函数拆成单参数(或部分)函数,内部再返回调用下
阅读全文
摘要:new操作符 var person1 = new Object () person1.name = 'zhangshan person1.age = 22 字面量创建 var person2 = { name:'zhangshan', age:'22', } 工厂模式创建 工厂模式解决了重复实例化多
阅读全文
摘要:forEach() //Array.prototype.forEach()方法对每个元素执行一次提供的回调函数; //第一个参数是我们提供的回调函数; //第二个参数thisArg:回调函数中this指向,即如果我们想在回调函数中对非回调函数的作用域进行一些操作,那么就可以把操作的对象当成第二个参数
阅读全文
摘要:我们在使用一个对象时,其中有一个需要的方法这个对象上没有,这个时候我们当然可以在这个对象上新增这个方法,但是如果我们只是偶尔使用一次,那不是麻烦且作用不大吗?这时候我们自然而然的会想到可不可以找一个有这个方法的对象,然后把这个方法接过来用用呢?还真有这种方法!我们把别人家的方法借过来用,用的时候把人
阅读全文
摘要:js变量类型判断方式 首先我们知道js中若想验证某个值是否为null,应该使用操作符 ,==无法区分null和undefined; 定义一组变量,适用于全文; let num = 123; let num1 = 1 / 0 //Infinity let num2 = null / 0 //NaN l
阅读全文