![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
js
wangsiyisiyi
这个作者很懒,什么都没留下…
展开
-
vue中设置全屏和退出全屏,esc和f11的按键事件的特殊处理
//mounted中 //本来想直接禁掉esc的键盘按下的默认行为的,但是浏览器会有个提示,并且百度看了众多解决方案,这个提示貌似不好去掉 // if (navigator.keyboard && navigator.keyboard.lock) { // // 禁用esc退出全屏 // navigator.keyboard.lock(['Escape']) // } else { // console.log('您的浏览器上不支持该功能原创 2021-05-20 18:12:47 · 4949 阅读 · 7 评论 -
node导入excel文件,处理并导出excel文件
const fs = require('fs')const xlsx = require('node-xlsx').default // 读取Excellet exceldata = xlsx.parse(`${__dirname}/11.xlsx`)let exportData = []for (let rowId in exceldata[0]['data']) { let row = exceldata[0]['data'][rowId] exportData.push(r原创 2021-05-19 22:24:20 · 544 阅读 · 0 评论 -
gulp打包的配置文件
const {src,dest,parallel,series,watch}=require('gulp')const loadPlugins=require('gulp-load-plugins')const plugin=loadPlugins()//实现自动下载依赖// const plugin.sass=require('gulp-sass')// //js转换还要下这两个依赖@babel/core @babel/preset-env// const plugin.bebel=requi原创 2021-05-14 15:40:14 · 135 阅读 · 0 评论 -
手写一个自己的promise
// Promise有状态,pending,fulfilled,rejected//创建实例的时候,要丢一个函数进去,形参是resolve,reject两个方法//调用resolve,就是把pending状态改为fulfilled,reject()是改为rejected,一旦状态更改后,就不可以再改了//先定义三个状态const PENDING='pending'const FULFILLED='fulfilled'const REJECTED='rejected'class Myprom原创 2021-04-27 13:47:45 · 223 阅读 · 5 评论 -
Reflect介绍,及常用的方法
Reflect是ES2015新推出的特性,虽然是大写开头,但就像Math一样,其内部的属性和方法都是静态的,不能使用new来创建实例.在Reflect提出之前,我们对对象的操作基本上五花八门添加一个键值对是obj[key]=value删除属性用的是delete操作符获取全部的key用的Object.keys()判断对象是否包含一个属性,用的又是in操作符没有什么统一性可言,Reflect的提出,有望以后去掉不统一的操作,慢慢的过渡到Reflect的统一操作上来Reflect成员方法就是Prox原创 2021-04-23 16:12:01 · 939 阅读 · 0 评论 -
proxy知识点分享
Proxy是ES2015新增的特性,其内置的捕捉器可以很好的监听到对象的各种变化,比原先的Object.defineProperty可以监听到更多的对象变化,并且写起来也更加方便,所以vue3采用了新的proxy特性来实现数据的双向绑定下面演示3种基本的对象操作以及其对应的proxy的捕捉器的简单代码const person={ name:'tom', age:20}const proxy=new Proxy(person,{ get(target,property){ conso原创 2021-04-23 15:49:57 · 173 阅读 · 2 评论 -
深拷贝与浅拷贝
前提js中根据存储方式的不同,将数据分为两大类,一类是基本数据类型,另一类是引用数据类型,基本数据类型存储在栈中,而引用数据类型在栈中存储的是指向堆内存的地址.let arr=[1,3,5]let arr1=arr //把arr的地址值给arr1,那么arr1和arr指向堆内存的地址是一样的,修改任意arr或者arr1,就是将对应地址中的内容修改了,和这个情况类似,还有函数和对象和其引用...原创 2020-03-11 23:39:36 · 101 阅读 · 0 评论 -
set数据结构及常用方法
set数据结构set类似于数组,不允许元素重复1,set创建let s1=new Set() //创建一个空的set集合let s2=new Set([1,2,4,5,6]) //创建一个包含1,2,4,5,6的set集合2,add()方法s1.add(‘haha’) //给s1中添加元素’haha’,如果已经有这个元素了,就添加不进去了,返回值是添加过后的s1,因此...原创 2020-03-09 23:50:10 · 892 阅读 · 0 评论 -
回调地狱和promise解决方案,async await解决方案
回调函数是函数的一种应用方式在你调用 a 函数的时候, 把 b 函数当作参数传递进去比如下面这种getSend('./server/a.php', function (res) { // res 就是后端发回来的响应体 var result = JSON.parse(res) // 2. 发送第二个请求 getSend(`./server/b.php?n1=${result...原创 2020-03-07 23:44:34 · 165 阅读 · 0 评论 -
js中数据类型转换
js中数据类型转换,分为两大类:强制类型转换和自动类型转换强制类型转换:分成三种1、转成number类型有三个方法Number(),parseInt(),parseFloat()Number(),将括号里的内容整体解析转变成数字类型,如果整体不是数字类型,就变成NaN其中Number(false)是0,Number(true)是1,Number(‘10’)是10,Number(null)...原创 2020-03-06 23:00:45 · 296 阅读 · 0 评论 -
如何解决跨域问题
首先要了解:浏览器有个同源策略同源策略是浏览器给请求方的限制,只能向自己家的服务器发送请求如果你给和你不同传输协议或者域名不同或者端口不同的服务器发送请求,就会触发同源策略,这个请求就称为跨域请求跨域请求有很多种解决方案,下面介绍三种解决方案第一种:jsonpjsonp原理:script的src属性不受同源策略的影响,可以任意请求,不管请求的什么类型的文件,都当做js文件来处理<...原创 2020-03-06 00:00:22 · 168 阅读 · 0 评论 -
设计模式,单例模式,组合模式,观察者模式
概念设计模式就是根据特定问题,给出的简洁而优化的解决方案单例模式模式的目的:一个构造函数只能new出一个对象组合模式观察者模式原创 2020-03-01 23:00:31 · 185 阅读 · 0 评论 -
闭包概念,闭包条件,闭包语法,闭包特点
闭包闭包就是函数的高级应用闭包的前提条件在函数的定义阶段1,在内存中开辟一块空间2,把函数体以字符串形式存储,不解析变量3,把函数体地址值赋值给函数名在函数的执行阶段1,根据函数地址值找到那个空间2,再开辟一个函数的执行空间3,给函数的形参赋值4,预解析5,把所有的代码复制到执行空间6,执行代码,解析代码7,销毁执行空间特殊情况下,执行空间不会销毁当函数的返回值是一...原创 2020-02-23 20:09:34 · 375 阅读 · 2 评论 -
jQuery基础知识点总结
原创 2020-02-23 19:47:11 · 155 阅读 · 0 评论 -
自封装数组的forEach(),fliter(),some(),every()方法 和字符串的repeat()方法
封装数组的forEach() 实现数组的遍历//封装数组的forEach() 实现数组的遍历 function forEach(array,fn){ for(let i=0;i<arr.length;i++){ fn(array[i],i,array); } } let arr =[1,3,5,6,7,8]...原创 2020-01-11 15:23:22 · 1134 阅读 · 0 评论 -
求两个数组的差集,并集和交集和数组元素的去重处理
差集//差集 元素在第一个集合中,但不在第二个集合中var arr1=[2,1,3,5,67];var arr2=[2,4,6,89,13,5];var arr5=[];for(var i=0;i<arr1.length;i++){ if(arr2.indexOf(arr1[i])===-1){ arr5.push(arr1[i]); }}do...原创 2020-01-07 21:30:48 · 321 阅读 · 0 评论 -
变量泄露
循环体中定义的函数,函数内部是函数作用域,循环内除了函数的部分属于全局作用域.函数内部是函数作用域.而且函数属于不调用,不执行的代码块.函数被调用时,函数内部的循环变量,已经是循环结束之后的循环变量值.,不会随着循环变量的改变而改变.水平有限,只能理解到这个程度了.欢迎大神指点....原创 2020-01-07 21:11:43 · 562 阅读 · 0 评论 -
自编写数组的pop方法,push方法,shift方法,unshift方法,concat方法,join方法,slice方法
push函数 function push(){ //获取传进来的数组 if(!Array.isArray(arguments[0])){return;} var arr=arguments[0]; for(var i=1;i<arguments.length;i++){ ...原创 2020-01-06 21:51:34 · 274 阅读 · 0 评论 -
事件代理(事件委托)的案例
将事件绑定在触发元素的父元素身上,触发元素即even.target,如果是点击事件,even.target就指向被点击的元素.<div class="container"> <div class="titles"> <div class="title active">1</div> &...原创 2020-01-06 21:43:15 · 316 阅读 · 0 评论 -
获取属性节点和文本节点
获取属性节点和文本节点<p title="txt" id="p"> 文本</p><script> var a=document.getElementById('p'); //获取元素 console.log(a.attributes[1].nodeType); //a.attributes获取到的是元素的属...原创 2020-01-04 10:14:24 · 583 阅读 · 0 评论