javaScript
文章平均质量分 50
我家空空
这个作者很懒,什么都没留下…
展开
-
vue渲染数据后顺序乱了
vue渲染数据后顺序乱了转载 2023-03-05 10:06:41 · 248 阅读 · 1 评论 -
文件分片上传
2、进行分片设置,文件File基于Blob, 继承了Blob的功能,可以把File当成Blob的子类,利于Blob的slice方法进行文件分片处理,并且依次进行上传。1、通过dom获取文件对象,并且对文件进行MD5加密(文件内容+文件标题形式),采用SparkMD5进行文件加密;3、分片文件上传完成后,请求合并接口后端进行文件合并处理。'上传完成,发送合并请求'转载 2022-08-22 08:27:54 · 1897 阅读 · 0 评论 -
Sortable.js学习笔记
Sortable.js是一款优秀的js拖拽库,支持ie9及以上版本ie浏览器和现代浏览器,也可以运行在移动触摸设备中。不依赖jQuery。支持 Meteor、AngularJS、React、Vue、Knockout框架和任何CSS库,如Bootstrap、Element UI。你可以用来拖拽div、table等元素。...转载 2022-08-14 23:46:18 · 513 阅读 · 0 评论 -
微任务和宏任务
1. 常见宏任务新程序或子程序被直接执行,例如<script>元素里的代码被执行事件回调函数,例如点击事件的回调函数setTimeout()和setInterval()requestAnimationFrameI/O操作setImmediateUI操作2. 常见微任务Promise.then(),.catch(),final()MutationObserverObject.observenodejs中的process.nextTick()3. 事件循环事件循环转载 2022-03-31 13:34:13 · 143 阅读 · 0 评论 -
BOM学习
1. BOM概述1.1 什么是BOMBOM(Browser Object Model),浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是window。1.2 BOM的构成window对象是浏览器的顶级对象。2. window对象常见事件2.1 窗口加载事件说明:window.onload是窗口(页面)加载事件,当文档内容完全加载完成后会触发该事件(包括图像,脚本文件,CSS文件等)。使用:window.onload = function(){};// 或下面转载 2022-03-31 11:29:49 · 141 阅读 · 0 评论 -
JavaScript:this指向问题
1. 全局作用域或普通函数中this指向全局对象window2. 方法(对象所有函数)谁调用,this就指向谁。3. 构造函数this指向构造函数的实例对象4. 箭头函数当声明一个普通函数时,会定义一个this对象,指向当前函数所属运行环境。箭头函数没有this,所以在箭头函数中使用this时,会向外找,直到找到为止。仅个人理解,有误的地方还请大家指出。示例一:var o = { say(){ console.log(this); }, eat: (原创 2022-03-30 21:39:58 · 1274 阅读 · 0 评论 -
ECMAScript:事件
1. EventTarget接口1.1 概述事件的本质是程序各个组成部分之间的一种通信方式,也是异步编程的一种实现。DOM节点的事件操作(监听和触发),都定义在EventTarget接口。所有节点都部署了这个接口,其它一些需要事件通信的浏览器内置对象(比如,XMLHttpRequest、AudioNode、AudioContext)也部署了这个接口。该接口主要提供三个示例方法:addEventListener():绑定事件的监听函数removeEventListener():移除事件的监听函数转载 2021-12-27 14:34:36 · 171 阅读 · 0 评论 -
交换两个数据的值
JS代码实现第一版(不能写在一个函数里,然后调用)let tmp = aa = bb = tmp第二版a = a + bb = a - ba = a - b第三版[a, b] = [b, a]扩展:交换数组里的两个数据[arr[i], arr[j] = arr[j], arr[i]]参考链接JavaScript交换两个变量值的七种解决方案...转载 2021-12-19 11:09:47 · 53 阅读 · 0 评论 -
排序->冒泡排序
冒泡排序最简单排序实现(初级版)冒泡排序是一种交换排序,它的基本思想:两两比较相邻记录关键字,如果反序则交换,直到没有反序的记录为止。(引用于大话数据结构379页)好像概念解释不是很难啊,但是写代码的时候总是会被其中两个循环里的i, j的范围给搞混。所以,我就做了对一个数组排序的详细过程的演示。演示数组:arr = [6, 2, 4, 1, 3],数组长度:len=5;i用来表示当前是第几轮排序,从1开始。j用来表示数组索引。第一轮排序:i=1,由下图可以看到第一轮排序总共进行了4次(len原创 2021-11-03 10:17:23 · 405 阅读 · 0 评论 -
牛客网刷题:寻找第K大
题目描述有一个整数数组,请你根据快速排序的思路,找出数组中第 k 大的数。给定一个整数数组 a ,同时给定它的大小n和要找的 k ,请返回第 k 大的数(包括重复的元素,不用去重),保证答案存在。要求:时间复杂度 O(nlogn)O(nlogn)O(nlogn)O(nlogn)O(nlogn)O(nlogn),空间复杂度 O(1)O(1)O(1)O(1)O(1)O(1)数据范围:0≤n≤10000≤n≤10000\le n \le 10000≤n≤10000≤n≤10000≤n≤1000, 1≤K≤原创 2021-12-19 10:57:01 · 371 阅读 · 0 评论 -
前端Tab栏实践
1. css使用display控制每项的展示index.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>使用不同CSS切换效果的tab栏</title> <li原创 2021-12-14 17:35:46 · 410 阅读 · 0 评论 -
clientX&&screenX&&offsetX&&pageX
1. MouseEvent.clientX,MouseEvent.clientY说明MouseEvent.clientX属性返回鼠标位置相对于浏览器窗口左上角的水平坐标(单位px),MouseEvent.clientY返回**垂直坐标。**这两个属性都是只读属性。2. MouseEvent.screenX,MouseEvent.screenY说明MouseEvent.screenX属性返回鼠标位置相对于屏幕左上角的水平坐标(单位像素),MouseEvent.screenY属性返回垂直坐标。这两个属转载 2021-12-13 14:22:57 · 180 阅读 · 0 评论 -
Object对象知识点
1. 如果Object方法的参数是一个对象,它总是返回该对象,即不用转换var arr = []var obj = Object(arr)console.log(arr === obj) //truevar value = {};var obj = Object(value) // 返回原对象obj === value // truevar fn = function () {};var obj = Object(fn); // 返回原函数obj === fn // true2.原创 2021-12-12 20:38:34 · 381 阅读 · 0 评论 -
Unexpected token ‘instanceof‘
执行下列代码会报错:{} instanceof Object原因:instanceof 的前操作数 需要是一个对象,但是{} 同时也是空的代码块,所以js无法识别{}是代码块还是空对象,js 语句优先,优先识别为代码块就报错了。。。改为:({}) instanceof Object参考链接:{} instanceof Object...转载 2021-12-10 22:00:10 · 374 阅读 · 0 评论 -
JS扁平化数组
第一种方案:array.flat(Infinity)function _flatten(arr) { // 第一种方式 return arr.flat(Infinity)}console.log(_flatten([1, [2, 3], 4]))第二种方案:递归let res = []function _flatten(arr) { for(let i=0; i<arr.length; i++){ if(Array.isArray(arr[i]))原创 2021-12-09 17:47:12 · 483 阅读 · 0 评论 -
JS的几种继承
第一种:构造函数继承核心思想:使用call()改变子类的this指向父类,使其子类实例拥有父类的属性和方法代码:function Person(name){ this.name = name this.hello = function(){ console.log('hello') }}Person.prototype.introduce = function(){ console.log('你好,我叫' + this.name)}functi原创 2021-12-07 23:12:29 · 280 阅读 · 0 评论 -
Array.prototype.map()
1. 说明map()方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。小案例:const arr = [1, 4, 9, 16]const map = arr.map(x => x * 2)2. 语法let newArr = arr.map(function callback(currentValue[, index[, arr]]){ //do Something}[, thisArg])2.1 参数callback:生成新数组元素的函数,使用3转载 2021-12-07 19:01:57 · 1871 阅读 · 0 评论 -
axios学习笔记
一、什么是axios?Axios是一个基于promise的HTTP库,可以用在浏览器和node.js中。1.1 特性在浏览器中创建XMLHttpRequests在node.js中创建http请求支持PromiseAPI拦截请求和响应转换请求数据和响应数据取消请求自动转换JSON数据客户端支持防御XSRF1.2 axios API通过向axios()传递相关配置来创建请求。返回一个promise对象。只有url参数是必须的,method默认为get用法一:axios(con原创 2021-12-05 17:24:19 · 1575 阅读 · 0 评论 -
instanceof用法&&重写instanceof
1. 作用instanceof运算符用于检测构造函数的prototype属性是否出现在某个实例对象的原型链上。2. 语法object instanceof constructor参数object:某个实例对象constructor:某个构造函数描述instanceof运算符用来检测constructor.prototype是否存在于参数object的原型链上3. 判断引用数据类型function Person(name){ this.name = name}let p =原创 2021-12-04 14:53:44 · 322 阅读 · 0 评论 -
正则表达式实例
实例一:身份证号我没校验过,不清楚对不对,就是先记着一代身份证15位:身份证号的规则:前6位地区编码(非0开头):/[1-9]\d{5}/出生年份后两位(00-99):/\d{2}/2位月份(01-12):/(0[1-9])|(10|11|12)/2位日数(01-31):(([0-2][1-9])|10|20|30|31)/顺序码3位:\d{3}\/^[1-9]\d{5}\d{2}(0[1-9])|(10|11|12)(([0-2][1-9])|10|20|30|31)d{3}/二原创 2021-12-04 11:32:49 · 734 阅读 · 0 评论 -
RegExp.prototype.exec()
1. 前言exec()方法在一个指定字符串中执行一个搜索匹配。返回一个结果数组或null。在设置了global或sticky标志位的情况下(如 /foo/g or /foo/y),JS的RegExp对象是有状态的,每一次exec()都从上一次结束的位置开始向后匹配。2.语法regexObj.exec(str)参数str:要匹配正则表达式的字符串。返回值匹配成功,返回一个数组(包含额外的属性index和input),并更新正则表达式对象的lastIndex属性。匹配失败,返回null,并把转载 2021-12-04 11:15:00 · 174 阅读 · 0 评论 -
JS的sort方法
Array.prototype.sort()sort()方法采用原地算法对数组进行排序,并返回数组。默认排序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的。用法语法:arr.sort([compareFunction(a, b)])参数:用来指定按某种顺序进行排列的函数。如果省略,元素按照转换后的字符串的各字符的Unicode位点进行排序。比较函数的参数:a:第一个用于比较的元素b:第二个用于比较的元素描述如果没有指定比较函数,那么数组按照转换后的字符串的各转载 2021-12-03 22:17:43 · 15255 阅读 · 1 评论 -
重写getElementsByClassName
因为IE8以下不支持getElementsByClassName,所以我们使用getElementsByTagName重写一下。function getElesByClassName(node, className){ if(node.getElementsByClassName){ //使用现有方法 return node.getElementsByClassName(className) }else{ var res = new A原创 2021-11-17 15:18:02 · 209 阅读 · 0 评论 -
01-js数据结构:栈
ES5实现实现1:方法添加到类上//声明这个类的构造函数function Stack(items){ //用来保存栈里的元素 this.items = items || []; //向栈顶添加元素 this.push = function(element){ //push():向数组的末尾添加一个或更多元素,返回新的长度 this.items.push(element); } //移除栈顶的元素 this.pop原创 2021-11-13 19:33:40 · 953 阅读 · 0 评论