
js
文章平均质量分 72
喵大叔、
活到老,学到老,学到老,活到老---学无止境
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
关于前端的一些知识点自我梳理
JS方面原型继承, es6的class继承知识点一、 原型继承的几种方式通过构造函数继承// 创建个 人类 构造函数function People(){ this.type = "人";}People.prototype.say = function(){ console.log("hello People")}// 再创建个 学生 构造函数function Student(name,age){ this.name = name; this.age= age;}原创 2021-01-27 17:44:48 · 310 阅读 · 0 评论 -
关于前端代码埋点数据上报的实现
前提最近项目有需求,需要对一个小程序以及官网项目就行数据埋点上报,但是又不让使用第三方的SDK,要自己封装,哎,难搞,没办法,就各种抠脑壳查资料,在这做个笔记,总结一下什么是数据埋点,有什么用个人理解就是对网站,项目进行业务数据,用户行为数据及其他实际需要的数据进行采集上报,是了解用户行为,分析用户行为,提高用户体验的一种方式,通过这些采集来的数据就可以进行分析,知道用户来源,访问量,点击量,停留时长等数据,将用户使用产品的行为进行可视化,对产品进行优化调整,常见的解决方案有三种,代码埋点、可视化埋原创 2020-12-16 16:25:04 · 4220 阅读 · 3 评论 -
项目中导出excel,统一封装
//下载 excelutil.downloadExcel=function(res,fileName){ // if(res.data.size<1000){ // var reader = new FileReader(); // reader.onload = e => alert(JSON.parse(e.target.result).msg); // reader.readAsText(res.data); // }else{ let blob原创 2020-11-12 17:13:43 · 202 阅读 · 0 评论 -
通过闭包,来实现简单的状态存储的简单模块化demo
当我们的项目越来越大,那么需要保存的数据与状态就越来越多,因此,我们需要一个专门的模块来维护这些数据,这个时候,一个叫做状态管理器的东西就应运而生,下面是一种简单的方式,模仿状态管理器的实现原理// 自执行创建模块(function() { // states 结构预览 // states = { // a: 1, // b: 2, // m: 30, // o: {} // } var states =原创 2020-11-10 13:16:38 · 687 阅读 · 0 评论 -
关于axios的公共部分封装
axios.interceptors.request.use( config => { /*此处是针对请求头做一系列处理的地方,比如加token或者一些其他公共参数,但切记一定要将config return出去,否则无法正常发送请求 */ // const token = localStorage.getItem('token') // if (token) { // 判断是否存在token,如果存在的话,则每个http header都加上token // con原创 2020-10-28 16:10:43 · 427 阅读 · 0 评论 -
解决Chrome浏览器无法自动播放音频视频的问题
谷歌浏览器做了改革,不再允许自动播放音频和视频。Chrome只允许用户对网页进行主动触发后才可自动播放音频和视频。<video autoplay></video> 所以好多需求会要求在网页背后播放一段音频文件这种需求就头疼了,解决方案1. 比较常规的做法是,为video标签设置muted属性,使它静音,这样视频就能自动播放了,但是没有声音。然后待用户在网页上有了任意触发后,再将muted去掉。或者让用户手动去打开音频(腾讯视频就是这样做的)。2.使用iframe来触发权限原创 2020-10-16 17:19:33 · 9181 阅读 · 4 评论 -
计算数组(内部元素为对象)某个key值出现的次数
// 判断元素重复次数 arrCheck(data, key) { let arr = JSON.parse(JSON.stringify(data)); var newArr = []; let obj = {}; for (var i = 0; i < arr.length; i++) { var temp = arr[i][key]; var count = 0; for (var j = 0原创 2020-09-18 16:50:26 · 954 阅读 · 0 评论 -
前端 sign参数验签
签名生成的通用步骤如下:第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。特别注意以下重要规则:◆ 参数名ASCII码从小到大排序(字典序);◆ 如果参数的值为空不参与签名;◆ 参数名区分大小写;◆ 接口可能增加字段,验证签名时必须支持增加的扩展字段第二步,在stringA最后拼接上key得到stringSignTe原创 2020-09-03 15:20:35 · 2246 阅读 · 0 评论 -
对展开运算符和object.assign()的理解
Object.assignObject.assign是用来合并对象是浅拷贝,实现原理主要是将所有可枚举属性的值从一个或多个源对象复制到目标对象,同时返回目标对象。主要是用使用for…in 循环遍历出所有可枚举的自有属性。并复制给新的目标对象(使用 hasOwnProperty 获取自有属性,即非原型链上的属性)扩展运算符扩展运算符可以用来合并数组,拆分字符串,合并对象(浅拷贝)等作用,扩展运算符在调用时,它会调用该数据结构的 Interator接口,也就是遍历器,然后将该数据转为用逗号分隔的参原创 2020-07-09 11:04:20 · 1805 阅读 · 1 评论 -
vue中表格内上移下移的js方法
在项目开发中,自定义表格中经常有需求允许每行数据进行上移下移及删除操作,那核心依赖于数组的splice()方法,具体实施如下// 表格内的 删除 handleDel(index) { this.tableData.splice(index, 1); }, // 新增一条表格数据 handlePush(name) { this.tableData.push({ name, price: null, type: false, deposit: null原创 2020-05-12 14:36:12 · 902 阅读 · 0 评论 -
下载EXCEL文件(下载导入模板)的工具类方法
在项目中经常遇到有下载导入模板这个需求,所以一般最好是将它封装成成一个工具类函数,供全局使用具体实现方法如下let util = {};//下载excel文件util.downloadExcel = function (res, fileName) { let blob = new Blob([res.data], { type: 'application/vnd.ms-excel' }); //application/vnd.openxmlformats-officedocumen原创 2020-05-12 14:31:57 · 745 阅读 · 0 评论 -
js 活动倒计时
最近在项目中需要写活动倒计时,就在这记录一下,比较基础 ,还能继续优化封装 <span id="_d">00</span> <span id="_h">00</span> <span id="_m">00</span> ...原创 2019-11-26 09:09:37 · 356 阅读 · 0 评论