
js
文章平均质量分 58
进击的小白兔vl
无论你期望或者不期望,清晨依旧来临。
展开
-
【面试】JS(二)
内存泄漏是指一块被分配的内存既不能使用又不能回收,直到浏览器进程结束释放内存的方法:赋值为 nul。原创 2022-08-19 14:56:13 · 279 阅读 · 0 评论 -
js计算文本宽度
canvas measureText计算文本宽度。原创 2022-08-04 16:26:22 · 625 阅读 · 0 评论 -
递归的写法
重点三要素确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。确定单层递归的逻辑: 确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程递归求1-100之间和f原创 2022-04-25 11:49:12 · 242 阅读 · 0 评论 -
async 函数
async 函数和 Generator 函数async 函数就是 Generator 函数的语法糖async函数就是将 Generator 函数的星号(*)替换成async,将yield替换成await以下四点改进(1)内置执行器Generator 函数的执行必须靠执行器,所以才有了co模块,而async函数自带执行器(2)更好的语义。async表示函数里有异步操作,await表示紧跟在后面的表达式需要等待结果(3)更广的适用性。co模块约定,yield命令后面只能是 Thunk 函数或原创 2022-04-21 16:18:01 · 333 阅读 · 0 评论 -
Generator 函数的异步应用
Generator 函数的异步应用整个 Generator 函数就是一个封装的异步任务,或者说是异步任务的容器。异步操作需要暂停的地方,都用yield语句注明。Generator 函数的执行方法如下function* gen(x) { var y = yield x + 2; return y;}var g = gen(1);g.next() // { value: 3, done: false }g.next() // { value: undefined, done: true }原创 2022-04-20 17:26:08 · 280 阅读 · 0 评论 -
Generator 函数
这里写目录标题基本概念基本概念执行 Generator 函数会返回一个遍历器对象,Generator 函数除了状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。Generator 函数是一个普通函数,但是有两个特征。一是,function关键字与函数名之间有一个星号;二是,函数体内部使用yield表达式,定义不同的内部状态(yield在英语里的意思就是“产出”)function* helloWorldGenerator() { yiel原创 2022-04-15 17:51:11 · 996 阅读 · 0 评论 -
[算法-1]数组中常用算法(二分查找+双指针)
在工作中对于数组的操作比较多,比较常用的还是暴力解法。现分享一些常用到的针对数组操作的算法js数组常用操作方法:map(),forEach()、filter()、some()、every()、.lastIndexOf()、indexOf()、match()、replace()参考链接二分法前提:数组为有序数组,同时题目还强调数组中无重复元素,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的,这些都是使用二分法的前提条件步骤:1、**定义区间:左闭右闭即[left, right],原创 2022-04-15 10:43:21 · 387 阅读 · 0 评论 -
html2Canvas下载PDF并压缩
多选多个html生成PDF文件并打包成压缩文件JS文件import JSZip from 'jszip';import FileSaver from 'file-saver';import html2Canvas from 'html2canvas';import JsPDF from "jspdf";import { Loading} from 'element-ui'/*** * @function 把html生产pdf,然后打包下载 * @params ele 要下载的dom原创 2022-02-23 10:07:33 · 1011 阅读 · 0 评论 -
Iterator 和 for...of 循环
Iterator 和 for...of 循环Iterator(遍历器)的概念Iterator(遍历器)的概念遍历器(Iterator)就是这样一种机制。它是一种接口,为各种不同的数据结构提供统一的访问机制任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)Iterator 的作用有三个:一是为各种数据结构,提供一个统一的、简便的访问接口;二是使得数据结构的成员能够按某种次序排列;三是 ES6 创造了一种新的遍历命令for…of循环,Iterator 接口原创 2022-02-10 16:17:54 · 733 阅读 · 0 评论 -
js计算当前周数及每周具体日期、每月的第一个周一
效果如图,选择年份,显示周数及对应日期##写了一个函数,传入年份,返回周数数组//设置周下拉框export function setweekOption(year){//传入年份 year=new Date(year).getFullYear() let days = getDay(year || new Date().getFullYear()) let weeks = {}; for (let i = 0; i < days.length; i++) {原创 2022-02-10 15:04:39 · 2053 阅读 · 1 评论 -
Promise 对象
含义Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息特点(1)对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。(2)一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rej原创 2022-01-19 16:13:05 · 911 阅读 · 0 评论 -
Proxy和Reflect
Proxy概述Proxy 实例的方法Proxy.revocable()Reflect概述Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。var proxy = new原创 2022-01-07 15:58:46 · 102 阅读 · 0 评论 -
Set 和 Map 数据结构
Set 和 Map 数据结构SetSet 实例的属性和方法WeakSet 结构MapMap实例的属性和操作方法与其他数据结构的互相转换WeakMapSet基本概念:类似于数组,但是成员的值都是唯一的,没有重复的值。Set本身是一个构造函数,用来生成 Set 数据结构const s = new Set();[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));for (let i of s) { console.log(i);}// 2 3 5原创 2022-01-06 17:01:17 · 120 阅读 · 0 评论 -
Symbol函数
Symbol函数概述Symbol.prototype.description作为属性名消除魔术字符串属性名的遍历Symbol.for(),Symbol.keyFor()实例:模块的 Singleton 模式内置的 Symbol 值概述ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,前六种是:undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。通过Symbol函数生原创 2022-01-06 15:14:20 · 1568 阅读 · 0 评论 -
ant组件库 a-table表格合并单元格
需求行/列合并data中:TableHeader: [ { key: "label", dataIndex: "label", title: "类别", fixed: "left", width: 60, align: "left", colSpan: 2,//简单合并表头,合并2 ,在第二个表头加 colSpan: 0(即不渲染)原创 2021-12-31 13:50:22 · 1434 阅读 · 0 评论 -
变量提升和暂时性死区
变量提升var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined。这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用。为了纠正这种现象,let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。// var 的情况console.log(foo); // 输出undefinedvar foo = 2;// let 的情况console.log(bar); // 报错ReferenceErrorlet bar = 2;上面转载 2021-12-08 14:37:26 · 804 阅读 · 0 评论 -
常用正则表达式
1.正确表达式“^\d+" //非负整数(正整数+0)"[0−9]∗[1−9][0−9]∗" //非负整数(正整数 + 0)"^[0-9]*[1-9][0-9]*" //非负整数(正整数+0)"[0−9]∗[1−9][0−9]∗” //正整数“^((-\d+)|(0+))" //非正整数(负整数+0)"−[0−9]∗[1−9][0−9]∗" //非正整数(负整数 + 0)"^-[0-9]*[1-9][0-9]*" //非正整数(负整数+0)"−[0−9]∗[1−9][0−9]∗” /转载 2021-11-23 10:25:40 · 211 阅读 · 0 评论 -
2021-11-15ES6解构赋值提取对象属性
ES6解构赋值删除对象制定属性var obj={name:"ww",id:"21",sex:"女",age:"11"}let{sex,age,...obj2} =objobj2//{sex:"女",age:"11"}原创 2021-11-15 16:20:32 · 1063 阅读 · 0 评论 -
2021-10-20利用 html2Canvas和JsPDF将HTML文件下载成PDF
方法如下思路:生成 canvas 节点,再利用html2Canvas插件 //导出PDF printOut() { var title = this.teacherName; var that = this; var shareContent = document.querySelector("#PDFDownLoad"); //需要截图的包裹的(原生的)DOM 对象 var width = shareContent.offsetWidth; //原创 2021-10-20 16:32:03 · 131 阅读 · 0 评论 -
Mutation Observer API和事件
一概述Mutation Observer API 用来监视 DOM 变动它等待所有脚本任务完成后,才会运行(即异步触发方式)。它把 DOM 变动记录封装成一个数组进行处理,而不是一条条个别处理 DOM 变动。它既可以观察 DOM 的所有类型变动,也可以指定只观察某一类变动。使用MutationObserver构造函数,新建一个观察器实例,同时指定这个实例的回调函数。var observer = new MutationObserver(function (mutations, observer)原创 2021-10-04 18:11:40 · 238 阅读 · 0 评论 -
DOM 概述
一、DOMJavaScript 操作网页的接口,全称为“文档对象模型”(Document Object Model)。它的作用是将网页转为一个 JavaScript 对象,从而可以用脚本进行各种操作(比如增删内容)。览器会根据 DOM 模型,将结构化文档(比如 HTML 和 XML)解析成一系列的节点,再由这些节点组成一个树状结构(DOM Tree)。所有的节点和最终的树状结构,都有规范的对外接口。DOM 只是一个接口规范,可以用各种语言实现。所以严格地说,DOM 不是 JavaScript 语法的一原创 2021-09-02 17:19:35 · 144 阅读 · 0 评论 -
js异步操作
一、异步操作概述单线程模型单线程模型指的是,JavaScript 只在一个线程上运行。也就是说,JavaScript 同时只能执行一个任务,其他任务都必须在后面排队等待。程序里面所有的任务,可以分成两类:同步任务(synchronous)和异步任务(asynchronous)。同步任务是那些没有被引擎挂起、在主线程上排队执行的任务。只有前一个任务执行完毕,才能执行后一个任务。异步任务是那些被引擎放在一边,不进入主线程、而进入任务队列(task queue)的任务。只有引擎认为某个异步任务可以执行了原创 2021-08-31 16:56:58 · 4582 阅读 · 0 评论 -
Object 对象的相关方法及严格模式
一、Object 对象的相关方法Object.getPrototypeOf方法返回参数对象的原型。这是获取原型对象的标准方法。实例对象f的原型是构造函数的prototype属性几种特殊对象的原型// 空对象的原型是 Object.prototypeObject.getPrototypeOf({}) === Object.prototype // true// Object.prototype 的原型是 nullObject.getPrototypeOf(Object.prototype) =原创 2021-08-29 16:06:09 · 441 阅读 · 0 评论 -
JS对象的继承
一、原型对象构造函数可以视为对象的模板。实例对象的属性和方法,可以定义在构造函数内部。缺点:同一个构造函数的多个实例之间,无法共享属性,从而造成对系统资源的浪费1.1 prototype 属性的作用原型对象的所有属性和方法,都能被实例对象共享。也就是说,如果属性和方法定义在原型上,那么所有实例对象就能共享,不仅节省了内存,还体现了实例对象之间的联系。每个函数都有一个prototype属性,指向一个对象function f() {}typeof f.prototype // "object"原创 2021-08-29 14:18:22 · 163 阅读 · 0 评论 -
实例对象与 new 命令
这里写目录标题一、对象二、构造函数2.1new 命令2.2Object.create() 创建实例对象一、对象面向对象编程(Object Oriented Programming,缩写为 OOP)(1)对象是单个实物的抽象(2)对象是一个容器,封装了属性(property)和方法(method)属性是对象的状态,方法是对象的行为(完成某种任务)。比如,我们可以把动物抽象为animal对象,使用“属性”记录具体是哪一种动物,使用“方法”表示动物的某种行为(奔跑、捕猎、休息等等)二、构造函数Jav原创 2021-08-27 16:52:07 · 218 阅读 · 0 评论 -
JSON 对象
JSON 对象1、JSON 格式2、JSON 对象2.1JSON.stringify()2.2参数对象的 toJSON() 方法2.3JSON.parse()1、JSON 格式JSON 格式(JavaScript Object Notation 的缩写)是一种用于数据交换的文本格式可以由解释引擎直接处理每个 JSON 对象就是一个值JSON 对值的类型和格式有严格的规定复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。原始类型的值只有四种:字符串、数值(必须以十进制表示)、布原创 2021-08-25 16:31:00 · 482 阅读 · 0 评论 -
正则表达式 RegExp 对象
一、概述正则表达式(regular expression)是一种表达文本模式(即字符串结构)的方法,有点像字符串的模板,常常用来按照“给定模式”匹配文本新建正则表达式有两种方法。一种是使用字面量,以斜杠表示开始和结束。var regex = /xyz/;另一种是使用RegExp构造函数var regex = new RegExp(‘xyz’);第一种方法在引擎编译代码时,就会新建正则表达式,第二种方法在运行时新建正则表达式,所以前者的效率较高。...原创 2021-08-25 16:00:11 · 440 阅读 · 0 评论 -
js包装对象
一、包装对象定义:三种原始类型的值——数值、字符串、布尔值——在一定条件下,也会自动转为对象,也就是原始类型的“包装对象”(wrapper)把原始类型的值变成(包装成)对象。var v1 = new Number(123);var v2 = new String('abc');var v3 = new Boolean(true);typeof v1 // "object"typeof v2 // "object"typeof v3 // "object"v1 === 123 // fa原创 2021-08-23 17:41:39 · 772 阅读 · 0 评论 -
Array 对象
这里写目录标题一、Array 对象1.1、构造函数1.2、静态方法1.3、实例方法一、Array 对象1.1、构造函数Array是 JavaScript 的原生对象,同时也是一个构造函数,可以用它生成新的数组。var arr = new Array(2);arr.length // 2arr // [ empty x 2 ]表示生成一个两个成员的数组,每个位置都是空值。// 无参数时,返回一个空数组new Array() // []// 单个正整数参数,表示返回的新数组的长度new原创 2021-08-22 22:41:55 · 120 阅读 · 0 评论 -
Object 对象
这里写目录标题一、Object 对象1.1 、Object 对象1.2 、Object 构造函数1.3 、Object 的静态方法1.4 、Object 的实例方法2、属性描述对象2.1、属性描述对象一、Object 对象JavaScript 的所有其他对象都继承自Object对象,即那些对象都是Object的实例。Object对象的原生方法分成两类:Object本身的方法与Object的实例方法。(1)Object对象本身的方法所谓“本身的方法”就是直接定义在Object对象的方法。(2)Ob原创 2021-08-22 18:57:34 · 870 阅读 · 0 评论 -
JS语法(四、数据类型转换、错误处理、console对象)
这里写目录标题一、数据类型的转换1.1强制转换1.2Number()1.3String()1.4 Boolean()1.4 自动转换1.4.1自动转换为布尔值1.4.2自动转换为字符串1.4.3自动转换为数值二、错误处理机制2.1Error 实例对象2.2原生错误类型2.3自定义错误2.4throw 语句2.5try...catch 结构2.6finally 代码块三、编程风格四、console 对象4.1、console 对象的静态方法4.1.1console.log()4.1.2console.warn原创 2021-08-20 15:48:54 · 263 阅读 · 0 评论 -
JS基础(三、数组、运算符)
JS基础一、数组一、数组按次序排列的一组值。每个值的位置都有编号(从0开始),整个数组用方括号表示。任何类型的数据,都可以放入数组。如果数组的元素还是数组,就形成了多维数组本质上,数组属于一种特殊的对象。typeof运算符会返回数组的类型是object。特殊性:键名是按次序排列的一组整数(0,1,2…)var arr = ['a', 'b', 'c'];Object.keys(arr)// ["0", "1", "2"]对象的键名一律为字符串可以用数值读取,是因为非字符串的键名会被原创 2021-08-20 14:01:32 · 338 阅读 · 0 评论 -
JS基础知识(二)数据类型:字符串、对象、函数
JS数据类型一、字符串1、定义2、转义2、字符串与数组3、字符集4、Base64 转码二、对象2.1对象的引用一、字符串1、定义零个或多个排在一起的字符,放在单引号或双引号之中。如果要在单引号字符串的内部,使用单引号,就必须在内部的单引号前面加上反斜杠,用来转义。双引号字符串内部使用双引号,也是如此默认只能写在一行内,分成多行将会报错长字符串必须分成多行,可以在每一行的尾部使用反斜杠连接运算符(+)可以连接多个单行字符串,将长字符串拆成多行书写2、转义\0 :null(\u0000)\b原创 2021-08-17 17:49:18 · 336 阅读 · 0 评论 -
JavaScript基本语法及数据类型(一)
这里写目录标题一、JavaScript 简介1.1基本语法一、JavaScript 简介JavaScript 是一种轻量级的脚本语言。所谓“脚本语言”(script language),指的是它不具备开发操作系统的能力,而是只用来编写控制其他大型应用程序(比如浏览器)的“脚本”从语法角度看,JavaScript 语言是一种“对象模型”语言,运行时由解释器直接执行两个部分:基本的语法构造(比如操作符、控制结构、语句)和标准库(就是一系列具有各种功能的对象比如Array、Date、Math等) API(原创 2021-08-16 22:55:00 · 270 阅读 · 0 评论 -
对象(四)可选链 “?.“
如果可选链 ?. 前面的部分是 undefined 或者 null,它会停止运算并返回该部分为了简明起见,在本文接下来的内容中,我们会说如果一个属性既不是 null 也不是 undefined,那么它就“存在”。换句话说,例如 value?.prop:如果 value 存在,则结果与 value.prop 相同,否则(当 value 为 undefined/null 时)则返回 undefinedlet user = {}; // user 没有 address 属性alert( user?.转载 2021-06-18 18:59:06 · 131 阅读 · 0 评论 -
2021-06-18对象(三)构造器和操作符 “new“
构造函数它们的命名以大写字母开头。它们只能由 “new” 操作符来执行 function User(name) { // this = {};(隐式创建) // 添加属性到 this this.name = name; this.isAdmin = false; // return this;(隐式返回)}let user = new User("Jack");//无需重用let user = new function() { this.name = "John原创 2021-06-18 18:46:39 · 87 阅读 · 0 评论 -
2021-06-18对象(二)方法中的“this“
对象方法,“this”let user = { name: "John", age: 30, sayHi() { // "this" 指的是“当前的对象” alert(this.name); }};user.sayHi(); // John在没有对象的情况下调用:this == undefinedfunction sayHi() { alert(this);}sayHi(); // undefined注意:在对象中定义的方法总是有指向该对象的转载 2021-06-18 16:54:00 · 93 阅读 · 0 评论 -
JS数组添加元素的三种方式
JS数组添加元素的三种方式1、push() 结尾添加 数组.push(元素)参数描述newelement1必需。要添加到数组的第一个元素。newelement2可选。要添加到数组的第二个元素。newelementX可选。可添加多个元素。2、unshift() 头部添加 数组.unshift(元素)参数描述newelement1必需。向数组添加的第一个元素。newelement2可选。向数组添加的第二个元素。newelementX可选。可添加若干个元素。3、splice() 方法向/从数组指转载 2021-06-09 09:39:15 · 6862 阅读 · 0 评论 -
2021-05-28JS 对象(一)基本概念及拷贝
对象创建在这里插入代码let user = new Object(); // “构造函数” 的语法let user = {}; // “字面量” 的语法片let user = { // 一个对象 name: "John", // 键 "name",值 "John" age: 30 // 键 "age",值 30 // 读取文件的属性:alert( user.name ); // Johnalert( user.age ); // 30删除delete转载 2021-05-28 16:08:40 · 117 阅读 · 0 评论 -
element+vue 数组合并及去重,实现联动查询
后台返回对象处理成数组如图,后台返回的格式为data里包含对象数组,对象数组里又含children要把children拿出来作为下拉框的值,同时几个下拉框实现联动查询区域-省份-城市联动查询后台数据格式如下页面显示可以联动查询,又可以单独选代码js部分init刷新函数里 initData("/api").then((res) => { this.regionList = res.data;//区域,先在data里定义 for(let i=0;原创 2021-04-23 16:34:23 · 743 阅读 · 0 评论