![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JS
单调的王先森
这个作者很懒,什么都没留下…
展开
-
cookie和session
cookie和session产生背景:http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的页面不能看作是同一个用户。区别:Session与Cookie的区别在于Session是记录在服务端的,而Cookie是记录在客户端的。cookie会在同源(域名,端口,协议)的http请求中携带,SESSION一般依赖于COOKIE进行传递(较少场景通过URL重写来实现)。禁用COOKIE后,SESSION不能正常使用。SESSION的缺点:保存在服务器端,每次读取都从原创 2022-04-18 16:34:05 · 130 阅读 · 0 评论 -
JS_语法糖
空值合并操作符(??)只针对null和undefined的操作符,作用类似于 ||或逻辑符 // || ?? // ||左侧为true返回左,为false返回右 遇到0,null undefined 都返回右 // ?除了null和undefined,其他都返回左,0 “” 也会当做正常值返回 0 || 2 // 2 0 ?? 2 // 0 "" || 1 // 1 ""原创 2021-12-20 15:21:43 · 257 阅读 · 2 评论 -
js-获取今天零点时间戳
获取 今天零点 时间戳直接获取日期再次计算时间戳 function fun00(){ let today = new Date(); return new Date(today.toDateString()).getTime(); } function fun01(){ let today = new Date(); return new Date(today.getFullYear()+'/'+today.getM原创 2021-12-16 11:58:35 · 2550 阅读 · 0 评论 -
webpack--摸鱼学习
对webpack的理解一直都是知其然却不知其所以然的状态,所以这次就以初学者角度去看webpack,把自己碎片一样的前端知识系统化串联起来。学习点:初始化项目,模块化语法在浏览器运行,打包压缩首先建个空文件夹,命令行初始化一个项目用npm init这个操作会生成一个package.json,可以把它当成包装说明书。输入项目名,作者等信息,项目就初始化好了,可以执行其他操作了。然后写a.js,b.js,各自抛出,引入到main.js执行。//a.jsexport const a='12原创 2021-12-01 17:35:04 · 698 阅读 · 0 评论 -
后端返回文件流,前端通过axios实现下载文件
需求:点击导出按钮,将列表数据下载成本地Excel文件实现:后端部分代码:后端代码响应头部需要设置Access-Control-Expose-Headers头部信息,把你需要获取的头部属性字段设置在这个值里面前端响应部分就可以获取,否则不可无法获取(多个用逗号分割),如下设置前端可以获取文件名字,response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(message, "UTF-8")原创 2021-08-23 17:09:15 · 1343 阅读 · 0 评论 -
JS获取上传图片的宽高
//html<input type="file" id="MapUploadTd" onchange="getMapPictureSize(this.files[0])"/>//jsvar mapPictureSize = [];function getMapPictureSize(file) { var reader = new FileReader; reader.onload = function (evt) { var image = new原创 2021-08-18 17:35:04 · 769 阅读 · 0 评论 -
项目中点击复制文本内容
// 复制手机号import Vue from 'vue';import { Message,} from 'element-ui';function copy(data) { const url = data; const oInput = document.createElement('input'); oInput.value = url; document.body.appendChild(oInput); oInput.select(); // 选择对象; c原创 2021-04-06 17:39:24 · 92 阅读 · 0 评论 -
webpack中require.context的作用 vuex/module封装
简化文件中需要多个 import/require 的情况,该方法可以引入多个文件,并整理成数组。语法require.context(directory, useSubdirectories, regExp)directory: 要查找的文件路径useSubdirectories: 是否查找子目录regExp: 要匹配文件的正则举个栗子这是文件结构,公司常用的vue项目vuex封装我们在外部的index.js中使用如下函数const files = require.context(".原创 2021-04-01 11:42:54 · 311 阅读 · 3 评论 -
彻底掌握高阶遍历函数——reduce
语法reduce(callback(rel,item[,index,array]){return ……},initVal)【】包起来的是非必传元素reduce(callback(累加器,当前被遍历的元素){return 运算体……},初始值)reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。callback (执行数组中每个值的函数,包含四个参数)1、pr原创 2021-03-31 23:35:28 · 370 阅读 · 0 评论 -
call,apply,bind的区别
1在js中,所有的函数再被调用的时候都会默认传入两个参数,一个是this,还有一个是arguments。在默认情况下this都是指当前的调用函数的对象。但是有时候我们需要改变this的指向,也就是说使函数可以被其他对象来调用,那么我们应该怎样做呢?这时候我们就可以使用call,apply和bind方法了。1.首先搞清楚call,apply和bind方法的来历在js中所有的函数都是Function的实例,而且对于Function来说,它的原型即Function.prototype中含有很多东西,其中call原创 2021-03-24 22:01:55 · 96 阅读 · 0 评论 -
数组及对象的扁平化
目录数组扁平化就是把多维数组转化为一维数组:toString + splitjoin+split 同上reduce递归 + 循环扩展运算符flat()对象扁平化就是将复杂的多层的对象转化为一维对象:数组扁平化就是把多维数组转化为一维数组:[1, [2, 3, [4, 5]]] ——> [1, 2, 3, 4, 5]toString + split先将数组转化为字符串,在使用split将字符串转化为数组:arr.toString().split(',').map( item =>原创 2021-03-15 11:16:32 · 1640 阅读 · 0 评论 -
vue的部分原理笔记
MVVMM:model 模型V:view 视图VM:视图模型传统的MVC模式数据是动态渲染的,但视图更新需要获取dom进行操作,性能不好;MVVM模式新加了VM作为中间件,实现数据驱动视图,开发者更多的精力用于研究逻辑和数据,开发效率高,性能也好。响应式原理核心API:Object.defineProperty()vue中data对象在初始化的时候,会添加get和set方法,当数据发生改变的时候,会触发更新视图的函数。Object.defineProperty()缺点:深度监听,需原创 2021-03-01 07:47:40 · 147 阅读 · 1 评论 -
成长为优秀的前端
你想成为怎样的人,你应当付出怎样的努力html && cssjavaScript原型vue相关vue动画vue项目开发vue工具函数封装多环境变量配置图片上传遇到的bug原创 2021-01-18 22:03:07 · 126 阅读 · 0 评论 -
JS 原生代码面试题
[‘1’,‘2’,‘3’].map(parseInt)的值是多少?为什么?解析:parseInt语法:默认接受两个参数,第一个参数是数组元素,第二个是当前元素下标parseInt接受的参数中,答案:[1,NaN,NaN]原创 2021-02-12 21:29:41 · 245 阅读 · 0 评论 -
let,const,var 区别
let const 是ES6新增的声明变量方法,用于解决var声明的一些问题var 具有变量提升,let,const没有var 可以重复声明,let,const不会var 不具备块级作用域,会造成变量穿透,let,const具有块级作用域(for,if都是),不会造成穿透let,const会造成暂时性死区var tmp = 123;if (true) { tmp = 'abc'; // ReferenceError let tmp;}//以上代码if后面{}形成了块级作用域,由于使用原创 2021-02-03 17:03:45 · 185 阅读 · 0 评论 -
前端模块化规范
CommonJS规范 每个文件就是一个模块,有自己的作用域。在一个文件里面定义的 变量,函数,类,都是私有的,对其他文件不可见。CommonJS使用 module.exports 和 require来导出导入模块支持条件表达式ES6规范 尽量的静态化,使得编译时就能确定模块的依赖关系以及输入和输出的变量ES6使用exports 和 import 来导出导入模块import -函数可以读取并执行一个JavaScript文件,然后返回被读取的模块的export命令所指定输出的代码。e原创 2021-02-03 16:00:02 · 127 阅读 · 0 评论 -
数组的遍历方法
var arr = [1, 2, 3, 4, 5, 6, 7] var obj = [{ a: 1 }, { a: 2 }, { a: 3 }, { a: 4 }, { a: 5 }, { a: 6 }, { a: 7 }] //for 循环 // for(let i=0;i<arr.length;i++){ // document.write(arr[i]); // } //12...原创 2020-12-18 16:01:51 · 134 阅读 · 0 评论 -
字符串相关面试题
我变秃了,也变强了计算某一个字符在字符串在出现的次数实现思路 :使用for循环遍历字符串,生成一个num变量,每个重复的字符都会使其增加1let str='hello everyone';let s='e'function catStr(str,s){ ler num=0; for(var i=0,len=str.length;i<len;i++){ if(str[i]==s){ num++ } .原创 2021-01-21 17:01:34 · 170 阅读 · 0 评论 -
关于promise
谈谈promise当别人问你关于promise的问题promise常用来来处理异步操作,用来解决回调地狱promise带有三种状态,pedding:初始状态,resolved:成功状态图,rejected:失败状态promise可以链式编程promise的API接口Promise 代表Promise构造函数,对外提供统一的 API,自己身上有all、reject、resolve等方法,原型上有then、catch等方法。promise 是一个对象,指的是Promise实例对象;它里面存原创 2020-12-18 16:01:17 · 77 阅读 · 0 评论 -
a.x=a={n:1} 解决令人头大的连等面试题
题目如下: var a={n:1} var b=a a.x=a={n:2} console.log(a.x); console.log(b.x); 这道题咋一看很简单,但你真的知道它的流程嘛?你解释了a你再解释下b啊你把a,b都打印出来,你会发现你将迷失在赋值的过程中;甚至你不知道如何去解释……我打印结果给你看下 console.log(a); //{n:2} console.log(a.x); //undefined conso原创 2021-01-20 18:29:39 · 165 阅读 · 0 评论 -
变量提升和函数提升
前言:在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域。变量提升即将变量声明提升到它所在作用域的最开始的部分。变量提升var 会将变量提升到当前作用域最顶端,只提升声明,不提升赋值函数具有作用域,访问变量会优先在当前作用域内寻找 //变量提升 console.log(a); //undefined 存在但未定义 var a=10 console.log(a); //10 //实际运行原创 2021-01-19 15:03:28 · 89 阅读 · 0 评论 -
原型的粗浅理解
原型js本身就是基于原型继承的语言,class的出现也只是形式看起来像是类继承,实际依旧是原型继承.在js中,万物皆对象。 原型是对象所拥有的公共的属性和方法原型有显式原型prototype,也有隐式原型_ proto _构造函数中的原型//构造函数名大写(非强制,但这么写有助于区分构造函数和普通函数)function Person(name,age) { this.name = name; this.age=age;}Person.prototype.say = fun原创 2020-12-28 15:46:40 · 75 阅读 · 0 评论 -
JS——深拷贝
var My={ name:'123', age:22, hobby:['吃饭','睡觉','打游戏'], study:{ js:{ vue:'双向数据绑定', react:'组件化开发' }, html:{ h5:{div:'语义化标签',input:'增强型表单'} } }}let My2=My //浅拷贝,复制的是原创 2020-12-27 15:21:48 · 89 阅读 · 0 评论