js
PQ℡
这个作者很懒,什么都没留下…
展开
-
前端项目git提交规范配置
为了使团队多人协作更加的规范,所以需要每次在 git 提交的时候,做一次硬性规范提交,规范 git 的提交信息。使用commitize、prettire、husky、lint-staged配合进行一些列配置达到效果原创 2024-02-18 14:57:09 · 749 阅读 · 0 评论 -
js 创建一个二维数组
二维数组的实现,及使用过程中需要注意的点原创 2022-06-20 11:15:09 · 3774 阅读 · 0 评论 -
正则表达式?相关的解析
正则表达式?:、?=、?!、?<=、?<! 相关的解析转载 2022-01-13 11:29:51 · 56 阅读 · 0 评论 -
vue3+ts vscode无法识别/@/ 路径
在tsconfig.json中添加下面的配置即可{ "compilerOptions": { "paths": { "/@/*": ["src/*"] } }}转载 2021-09-30 15:39:46 · 3862 阅读 · 0 评论 -
web开发兼容注意
原来safari浏览器不支持yyyy-MM-dd的时间格式,只能把返回前端的格式改成yyyy/MM/dd。原创 2021-06-18 11:39:48 · 42 阅读 · 0 评论 -
继承内置类型
1. 继承内置类型有些内置类型的方法会返回新实例。默认情况下,返回实例的类型与原始实例的类型是一致的。如果想覆盖这个默认行为,则可以覆盖 Symbol.species 访问器,这个访问器决定在创建返回的 实例时使用的类class SuperArray extends Array { static get [Symbol.species]() { return Array; } } let a1 = new SuperArray(1, 2, 3, 4, 5); let a2原创 2021-03-24 11:25:03 · 79 阅读 · 0 评论 -
js 抽象基类
1. 抽象基类有时候可能需要定义这样一个类,它可供其他类继承,但本身不会被实例化。虽然 ECMAScript 没 有专门支持这种类的语法 ,但通过 new.target 也很容易实现。new.target 保存通过 new 关键字调用的类或函数。通过在实例化时检测 new.target 是不是抽象基类,可以阻止对抽象基类的实例化// 抽象基类 class Vehicle { constructor() { console.log(new.target); if (new.原创 2021-03-24 11:24:38 · 1131 阅读 · 0 评论 -
js 类的继承实现
1. 原型链继承function SuperType(){ this.property = true}SuperType.prototype.getSuperValue = function(){ return this.property}function SubType(){ this.subProperty = false}// 继承SuperTypeSubType.prototype = new SuperType()let instance = new Sub原创 2021-03-23 17:50:05 · 91 阅读 · 0 评论 -
js前端正则强密码校验
/** * 强弱密码校验 * 1、长度8-20位 * 2、必须包含数字 * 3、必须包含字母 * 4、最小连续位数为4:Abcd、abcd、1234不允许 * 5、可以包含常用特殊字符 * 6、键盘横向方向规则 * 7、键盘斜线方向规则 */export const validPwd = (pwd: string) => { let regex = /(?=.*[0-9])(?=.*[a-zA-Z]).{8,20}/ // 字母连续规则 let strReg = /(.原创 2021-03-10 09:31:38 · 2562 阅读 · 0 评论 -
面试题 (() => 1).length === 0; // 输出什么
(() => 1).length === 0; // 输出什么函数是有length属性的,函数的length属性就是函数参数的个数原创 2021-03-04 09:00:14 · 138 阅读 · 1 评论 -
面试题:将一个数组转成树
let list = [ {id:1,name:'部门 A',parentId:0}, {id:2,name:'部门 B',parentId:0}, {id:3,name:'部门 C',parentId:1}, {id:4,name:'部门 D',parentId:1}, {id:5,name:'部门 E',parentId:2}, {id:6,name:'部门 F',parentId:3}, {id:7,name:'部门 G',parentId:2}, {id:8,nam.原创 2021-03-01 11:12:01 · 493 阅读 · 0 评论 -
面试题:var a = {n: 1}; var b = a;a.x = a = {n: 2}; console.log(a.x) console.log(b.x)的输出是什么
var a = {n: 1};var b = a;a.x = a = {n: 2};console.log(a.x)console.log(b.x)输出结果是undefined{n:2}解析首先,a 和 b 同时引用了{n:2}对象,接着执行到 a.x = a = {n:2}语句,尽管赋值 是从右到左的没错,但是.的优先级比=要高,所以这里首先执行 a.x,相当于为 a(或者 b)所指向的{n:1}对象新增了一个属性 x,即此时对象将变为 {n:1;x:undefined}。之.原创 2021-02-25 16:12:02 · 1369 阅读 · 0 评论 -
js ==判断的隐式转换
下面代码中 a 在什么情况下会打印 1?var a = ?;if(a == 1 && a == 2 && a == 3){ console.log(1);}答案var a = { i: 1, toString() { return a.i++; }}if( a == 1 && a == 2 && a == 3 ) { console.log(1);}== 判断会隐式调用toStrin原创 2021-02-25 11:18:42 · 90 阅读 · 0 评论 -
js 几种数组扁平化的实现方法
vararr=[ [1,2,2],[3,4,5,5],[6,7,8,9,[11,12,[12,13,[14]]]],10]var newArr = Array.from(new Set(arr.flat(Infinity))).sort((a,b) => a-b)// newArr => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]原创 2021-02-23 17:14:36 · 193 阅读 · 0 评论 -
createDocumentFragment
原创 2021-02-19 16:23:11 · 53 阅读 · 0 评论 -
js深浅拷贝
深度拷贝对象var newObj = JSON.parse(JSON.stringify(obj))转载 2019-11-18 14:58:02 · 131 阅读 · 1 评论 -
webpack4的学习之路
1.使用插件 clean-webpack-plugin 去清除dist目录//引入const { CleanWebpackPlugin } = require('clean-webpack-plugin')...plugins:[ new CleanWebpackPlugin()]2.使用插件 uglifyjs-webpack-plugin 压缩代码ERROR in...原创 2019-06-26 10:19:31 · 76 阅读 · 0 评论 -
js 小数运算精度问题
解决方法: 使用toFixed()进行四舍五入原创 2019-08-15 17:18:35 · 181 阅读 · 0 评论 -
js 原型链继承的学习
首先知道一下几点1. new 操作符到底做了什么创建一个新对象,并且把this变量引用该对象,同时还继承该对象的原型 属性和方法被加入到this引用的对象中 新创建的对象由this所引用,并隐式返回thisvar a = new A()//new 做了一下动作var o = new Object()o.__proto__ = A.prototypeA.call(o)2...转载 2019-08-16 12:22:58 · 71 阅读 · 0 评论 -
base64 编码与解码
MDN 给出了base64 编码与解码的函数atob('dGVzdA==') // test 解码btoa('test') // dGVzdA== 解码链接https://developer.mozilla.org/zh-CN/docs/Web/API/WindowBase64/Base64_encoding_and_decoding...原创 2019-09-06 21:50:22 · 153 阅读 · 0 评论 -
script 标签中的 async defer
关于脚本阻塞问题,一般的处理方法是将脚本的放在</body>之前进行引入。这样脚本就会在HTML 解析完后加载了。现在有两种解决方法1. 在script标签添加async属性浏览器遇到async脚本时不会阻塞页面渲染,而是直接下载然后运行。这样脚本的运行次序就无法控制,只是脚本不会阻止剩余页面的显示。当页面的脚本之间彼此独立,且不依赖于本页面的其它任何脚本时,as...转载 2019-09-26 15:22:19 · 323 阅读 · 0 评论 -
js 真伪数组的转换
call与apply的区别fn.call(this,arg1,arg2,arg3...)fn.apply(this,[arg1,arg2,arg3...])伪数组转真数组let arr = [].slice.call(obj)真数组转伪数组[].push.apply(obj,arr)判断真伪数组if(({}).toString.apply(arr)==='[o...原创 2019-04-19 13:31:38 · 165 阅读 · 0 评论