- 博客(16)
- 收藏
- 关注
原创 事件订阅派发模式
思路:定义一个state用来存贮订阅事件和事件对应的回调函数。on方法用来订阅事件和添加对应的回调。emit方法则是用来派发事件,并且执行事件对应的回调函数队列。off方法则是用来取消订阅事件的回调函数或整个事件。once方法是只订阅一次事件。
2023-10-27 17:50:54
121
原创 instanceof 的原理以及手写实现
众所周知,js数据类型分为基本数据类型与复杂数据类型,而 instanceof 便是用来检测复杂数据类型,返回一个布尔值。其原理便是,检测构造函数的原型是否出现在检测对象的原型链上。
2023-10-25 20:46:06
168
原创 标签名与:hover前是否有空格
#submitPassed:hover{ box-shadow: 0 1px 2px -2px rgb(0 0 0 / 16%), 0 3px 6px 0 rgb(0 0 0 / 12%), 0 5px 12px 4px rgb(0 0 0 / 9%); }不加空格,影响的是自身或其他相邻兄弟元素, 写的是一个划过出现盒阴影效果#submitPassed :hover { box-shadow: 0 1px 2px -2px rgb(0 0 0 / 16%), 0 .
2022-02-18 11:12:33
376
原创 实现一个点击保存内容到粘贴板上的功能
const copy = () => { const copyValue = document.getElementById('copyValue') // 如果想要选中内容是input标签包裹的则不需要重新生成input const input = document.createElement('input'); input.setAttribute('readonly', 'readonly'); input.setAttribute..
2022-02-18 10:48:01
295
原创 模糊搜索,搜索框值改变发起请求后,返回的值先后顺序不一致
bug原因及分析:在做视频会议项目中, 遇到一个搜索框的bug, 具体是搜索框值发生改变,就会发起请求,返回下拉框选项,然后就会遇到一种情况,搜索框值连续改变了三次, 因为三次返回值的大小不同,第三次请求返回值先来了,导致我想要的下拉框选项不对应。bug解决方案:先定一个全局变量let searchIndex = 0;然后再onSearch搜索请求中定义一个局部变量const valueIndex = ++ searchIndex;发起搜索请求, 在请求回调中if(searchIndex ==
2022-01-13 18:20:18
454
原创 react实现设置组合快捷键
分析下设置快捷键:1.首先组合快捷键第一个必须为功能键(shift、ctrl、alt)且最后一个键不能为功能键,2.组合键的键数大于1(shift+V),小于等于4(ctrl+shift+alt+A)3.当出现功能键+普通键+功能键时(如shift+A+alt)时,应替换为功能键+功能键+(shift+alt+),就是功能键必须相连,不相连最后一个功能键把普通键替换掉,4.当出现不符合规则的组合时需要变回未改变时的状态state = { oldKey: 'CTRL+F12', ne
2022-01-13 17:44:17
2193
1
原创 2021-05-25
React引入本地图片的方法类似于引入外部css样式,先用import引进来,起一个变量名。然后src={{变量名}}就可以了
2021-05-25 20:16:42
104
1
原创 关于数组排序方法sort()的理解
我在接触数组排序方法的时候看到这样一组代码:var arr = [10, 4, 50, 32];console.log(arr.sort((a, b) => a - b));然后他就按从小到大的顺序排好了;就很神奇。当时刚学没想那么深入,没弄懂return a-b到底是个什么意思;今天心血来潮,就各种百度,现在总算有个大致的理解了。我的理解是他是个冒泡排序,,内置了一个匿名的比较函数compare(a,b),遍历数组,a,b为连续的两个数、,a-b,如果>0则交换a,b的位置
2021-04-19 12:44:08
910
原创 数组随机排序的两种实现方法
1.利用数组中的sort()方法: var arr = [10, 4, 50, 32]; console.log(arr.sort((a, b) => a - b));2.Fisher-Yates Shuffle,复杂度为O(n)。从后向前遍历,不断将当前元素与随机位置的元素(除去已遍历的部分)进行交换function shuffle(arr) { let m = arr.length; while (m > 1){ let index =
2021-04-19 11:41:14
807
1
原创 JS 去除数组重复元素
第一种var arr=[1,6,1,5,5,5,1,1,5,5,5,5,55,];function norepeat(){for(var i=0;i<arr.length;i++){for(var j=arr.length-1;j>=i+1;j–){if(arr[i]==arr[j]){arr.splice(j,1)console.log(j)}}}}norepeat(arr);document.write(arr)第二种var arr=[1,6,1,5,5,5,1
2021-03-03 21:31:53
488
4
原创 JS 作用域
作用域:变量或者函数能够被访问到的范围。分为全局作用域和局部作用域一,全局作用域(1)最外层函数或者最外层函数外通过var声明的变量;如:var a = 10;//全局变量function val(){ //全局函数console.log(a)}(2)在函数内部,不通过var声明的变量(不是真正意义上的全局变量);如: function val(){a = 10}val()console.log(a) //打印的值为10,之所以不是真正意义上的全局变量的原因是:当 consol
2021-03-01 13:10:56
99
原创 js类型转换
一.显式转化:借助转型函数实现转换。1.转化为字符串类型(string): 直接使用转型函数String(),在小括号内加想要转换的数值或者布尔值就可以。如:可以看出第一个打印值为数值,而以下的数值,布尔值,undefind,null都被转化为字符串类型了。2.转换为数值类型 使用转型函数Number将其他类型函数转换为数值类型 。其中空字符串,空格字符串,null会被Number转换为0,undefined专为NaN,当其他类型无法转换成具体数值时,便会打印成NaN。如下图:3.转化为布尔
2021-02-27 16:00:19
6071
17
转载 Mysql安装、配置、优化
一: MYSQL安装和基本配置在linux上安装,能够用包管理工具来安装,比較简单:RedHat 系列:yum -yinstall mysql mysql-serverDebian系列:sudo apt-getinstall mysql mysql-server安装之后不知道mysql装到哪了怎么办,用whereis mysql 命令来找一下。先找到mysql的默认配置...
2019-12-13 16:34:33
393
转载 防火墙和系统安全防护和优化
如今无论是国家还是企业系统安全尤为重要,所以安全防护就显得特别关键了。防火墙防火墙(Firewall),也称防护墙,是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网(US5606668(A)1993-12-15)。它是一种位于内部网络与外部网络之间的网络安全系统。一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。在网络中,所谓“防火墙”,...
2019-12-13 09:43:24
400
转载 cenos基本信息和ssh
centos基本信息和ssh一、 CentOS1.centos是什么“CentOS是基于Linux内核的100%免费的操作系统,多用于服务器系统,CentOS的存在是为了提供一个免费的企业级计算平台,并努力与其上游源Red Hat保持100%的二进制兼容性。”2.CentOS长什么样子?因为 Windows 系统是可视化的操作界面,所以基本上大家都知道 Windows 大概长什么样子。...
2019-12-13 08:50:21
216
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人