
javascript
Zachary_zlc
资深爱码士!!
展开
-
【获取页面所有的不重复tag】
获取页面所有不重复标签和add(1)(2)() = 3的解决方案原创 2023-03-13 23:29:02 · 79 阅读 · 0 评论 -
【获取页面所有的不重复tag】
获取页面所有不重复标签原创 2023-03-13 23:23:49 · 122 阅读 · 0 评论 -
liunx 常用命令(1)
1、文件和文件夹操作1.pwd 绝对路径或当前工作路径;-P 可以抛开软连接;2.cd - 最近两个路径之间反复横跳;-P 可以抛开软连接;3.ls -a 把隐藏文件一起列出来;-l 列成一行;4.mkdir A : 创建文件夹 A 可以连续创建 mkdir A A/B ;5.touch 文件名或路径+文件名; 创建文件;6.cp– 复制文件到某个文件夹。cp 文件 目标文件夹路径;– 复制某个文件到某个文件夹下并覆盖原来的文件; cp 文件 要替换的目标文件;– 复制文件夹及其内原创 2022-05-08 14:59:03 · 197 阅读 · 0 评论 -
【无标题】
vim编辑器命令原创 2022-05-04 16:19:51 · 399 阅读 · 0 评论 -
linux文件夹解析
前端层面 liunx 文件夹认知原创 2022-05-04 15:22:13 · 1409 阅读 · 0 评论 -
【千分制显示数字的方法】想错了,入参应该是字符串不是数字~先保存一下吧
恰恰舞曲原创 2022-02-20 23:18:30 · 160 阅读 · 0 评论 -
分享一个最简二分法查找目标元素索引
javascript。二分法原创 2022-02-12 16:10:03 · 307 阅读 · 0 评论 -
用100行代码把Promise、Promise.all、Promise.race、Promise.finally源码大法炼成~
Promise、Promise.all、Promise.race、Promise.finally大法~原创 2022-02-12 15:43:03 · 556 阅读 · 0 评论 -
js 预编译原理
js原创 2022-02-04 14:36:04 · 652 阅读 · 0 评论 -
vue node 做RSA加密 ;; 利用jsencrypt插件(该部分放前端) node-rsa模块(该部分放node端)
前言:1.bcrypt 进行md5 加密后存在库中的密码密文是不可逆的;2.前端再用bcrypt 进行加密,两段密文是不一样的;3.bcrypt 方法比对只有该模块提供的compare方法,但是该方法要求同时提供原明文密码和库中的密文密码(一般为了保护用户账号安全,都这样放)才可以判断出密码是否正确;4.生成公私钥的方法一般用linux系统中的openssl:生成私钥:openssl genrsa -out rsa_private_key.pem 1024生成公钥:openssl rsa -in原创 2021-05-17 20:14:55 · 750 阅读 · 1 评论 -
js leetcode 全排列 数组元素任意组合不重复实现方法
function combination(target) {let result = []let group = []function comb(arr) {let currentfor(let i = 0; i < arr.length; i++) {current = arr.splice(i, 1)[0]group.push(current)if(arr.length === 0) result.push(group.slice())comb(arr)arr.splice(i原创 2021-05-14 09:42:24 · 537 阅读 · 0 评论 -
服务器端(node) nodemailer outlook邮箱 node-canvas echarts 服务器动态生成图表转成base64图片以邮件形式发送
function generateLineImage (myTitle, myLegend, data) { var options = { title: { text: myTitle, left: 'center' }, legend: { bottom: 0, data: myLegend }, grid: {原创 2021-05-10 18:18:15 · 625 阅读 · 0 评论 -
axios cancelToken source 取消接口请求时遇到的坑
问题描述:按照以下axios官方文档说明,使用source.tokenhe source.cancel终止请求时,调用一次source.cancel,会把所有的请求都终止,并且再次发送请求都发不出去了;解决办法:1.请求拦截器:config里面添加token(注意source=cancelToken.source()注意:每个请求被拦截的时候都新生成一个source;2.把刚才添加的source 存储到store的数组中(setCancelToken是存soure,setClearRequests原创 2021-04-29 10:15:02 · 3327 阅读 · 0 评论 -
Javascript 的错误类型
1.SyntaxError(语法错误);2.ReferenceError(引用错误);3.RangeError(范围错误);4.TypeError(类型错误);5.URLError(URL错误);6.EvalError(eval错误);原创 2021-04-13 21:47:08 · 72 阅读 · 0 评论 -
javascript 的事件循环(执行栈和任务队列 宏任务和微任务)
js的事件循环:特点:1.单线程 、 2.非阻塞;1.执行栈(单线程):整体代码的执行由上而下,编译一句,执行一句;2.任务队列(非阻塞):同步代码放到执行栈中执行,异步代码会先存放到任务队列中,执行栈代码先执行,异步代码在执行栈执行完后再执行;深入解释:宏任务与微任务分类定义:宏任务:同步代码、setTimeout、setInterval、setImmediate、i/o、UI rendering(多宏任务执行顺序);微任务:promise、Object.observe(已废弃)、mutat原创 2021-04-11 20:11:57 · 217 阅读 · 0 评论 -
如何让(a ==1 && a == 2 && a == 3)成立
如何让(a == 1 && a == 2 && a == 3)成立:问题核心:判等式在执行的时候会进行隐式转换,当a为对象的时候,会先调用a.valueOf() 再调用 a.toString(),方法,最后利用函数拦截重写方法,使等式成立;(function (){ var a = { i: 1, toString: function() { return a.i ++ } } if(a == 1 && a == 2 &&a原创 2021-03-24 16:15:16 · 330 阅读 · 0 评论 -
简简单单封装个Promise
function MyPromise (fn) { let that = this that.status = "pending" that.value = "" function resolve(value) { if(that.status === "pending") { that.status = "resolve" that.value = value } }原创 2021-03-15 22:33:42 · 127 阅读 · 0 评论 -
vue的核心思想是什么?
vue的核心思想是:数据驱动(可以翻下我前面的分享,有关于数据驱动的简单实现代码)原创 2021-02-25 15:32:04 · 541 阅读 · 0 评论 -
js 函数节流和防抖的实现
应用场景:防抖函数一般应用在resize、scrollTop等等,监听事件会被频繁触发,而我们不希望事件对应的执行函数不被频发触发的业务场景(可简单理解为延时执行)有两种常见的方式:分立即防抖和非立即防抖两种,可以综合写在一起如下:const debounce = (fn, wait, imm) { let timer return function() { let context = this let args = arguments if(timer) clearTimeout(ti原创 2021-02-25 15:19:29 · 114 阅读 · 0 评论 -
大佬分享的几道面试题,拿过来自己研究一下(2)
如何判断一个对象是否属于某个类? --推荐使用 instance原创 2021-02-25 14:15:33 · 122 阅读 · 0 评论 -
大佬分享的几道面试题,拿过来自己研究一下(1)
说一下js的数据类型,如何判断数据类型?(变量用k来声名)null !k && typeof(k) === ‘object’undefined typeof(k) === ‘undefined’String typeof(k) === ‘string’Number typeof(k) === ‘number’Boolean typeof(k) === ‘boolean’symbol typeof(k) === ‘symbol’Array Array.isA原创 2021-02-25 14:07:57 · 97 阅读 · 0 评论 -
javascript 优雅深拷贝
const deepClone = (data) =>{ let newData = Array.isArray( data ) ? [] : {} for( let k in data) { if(data.hasOwnProperty( k )) { if(typeof data[k] === 'object') { newData[k] = deepClone(data[k]) } else { newData[k] = data[k] } } }原创 2021-02-25 13:36:47 · 103 阅读 · 0 评论 -
(JS)javascript 5种继承类型
1.拷贝继承:2.原型链继承:3.借用构造函数继承:4.组合继承:5.寄生继承:6.寄生组合继承:原创 2021-02-02 11:05:19 · 106 阅读 · 0 评论 -
自己动手实现call、 apply、 bind 方法
实现call方法:function person(a, b, c, d) { console.log(this.name) console.log(a, b, c, d)}let man = { name: 'zachary'}Function.prototype.newCall = function(obj) { obj = obj || window obj.p = this let newArguments = [] for(let i = 1;原创 2021-01-27 15:04:29 · 197 阅读 · 0 评论 -
javaScript的 this绑定分析
注意:js中的this指向是根据执行上下文来确定的:绝大多数情况:1.全局执行上下文: this 指向widnow ,严格模式下指向undefied2.函数执行上下文:默认绑定: 函数调用时无前缀,默认this 指向widnow ,严格模式下指向undefied注意:严格模式下调用不在严格模式中的函数,并不会影响this指向;隐式绑定:如果函数调用时,前面存在调用它的对象,那么this就会隐式绑定到这个对象上注意1:如果函数调用前存在多个对象,this指向距离调用自己最近的对象;注意2:隐式原创 2021-01-22 16:35:17 · 122 阅读 · 3 评论 -
分享 一个好玩的 DOM API toggleAttribute(==setAttribute 和 removeAttribute)
用于切换设置属性的API<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <bod原创 2020-12-18 10:26:45 · 224 阅读 · 0 评论 -
拿到对象数组 根据子项(对象)--时间字符串--属性排序
描述:很多时候,前端会拿到[{a:1},{1:2},{a:3}…]类似的数据,然后去渲染页面,但是需求中要求升序或者降序渲染:既有如下方法:结合Array.sort() 使用Array.sort(getTimeSortByObjPropUp(‘排序依据的属性’)):说明:因为array.sort(func)sort 方法需要传入一个函数 like:function(a, b) {return a - b}下面的处理方法在此基础上进行升级,用闭包处理后再加入到sort方法中,一次来完成对象数原创 2020-12-17 14:36:36 · 169 阅读 · 1 评论 -
用递归方式查找字符串出现次数最多的字符及数量的方法(递归实现)
请按需调整输出结果:let str = 'abcabcacbbbbacabbvvvccccccccccccccccaavbaaaaaab' // 测试案例getHighestFrequencyStr(str, ['', 0]) // 执行方法 输出--["c", 20]let str = 'abcabcacbbbbacabbvvvccccccccccccccccccccccaavbaaaaaab' // 测试案例getHighestFrequencyStr(str, '', 0) //输出-原创 2020-12-16 17:02:26 · 604 阅读 · 0 评论