JS
bhots
不会写代码
展开
-
vscode 使用Eslint 格式化代码
第二步,点击下面的设置按钮,再搜索Eslint ,选择Format:Enable和Enable。在我们开发的过程中有时候会需要使用Eslint格式化代码,这时候我们就需要设置格式化的数据。接下来你的这一页代码都会按照Eslint 的标准显示了。第三步,右键选择使用…格式化,选择Eslint 即可。第一步:查找Eslint 并安装。原创 2023-01-07 15:00:16 · 2219 阅读 · 1 评论 -
JS C#字符串 判断 是否存在 indexof 方法谨慎使用
事情起源是我的代码有一个函数,将 list 的数据组成字符串并用逗号隔开。由于很多方法都能判断 字符串是否包含 某个字符串的方法,在可能的情况下尽量不要使用 indexof 方法了。当然可以通过表达式对 list 进行去重后再进行获取的方法,这个更加推荐,js 和C# 都能使用。最近在写代码的时候发现一个小bug,就是本来拿两条数据的,但是只拿了一条数据。解决方法是进行代码优化,通过一个新的list进行去除,如下。.自然就没有拿到后面的数据,后面就自然有错误了。本来显示的代码应该是。原创 2023-01-07 09:28:42 · 247 阅读 · 0 评论 -
搞定制作好看icon
在网页开发的时候我们很多时候有可能要用到ico文件,这是一种图标格式的文件,有时候我们必须要用到。如果你是个人开发者,或者是一名不会ps的大学生又急需作业的大学生,这时候我们就需要有一个ico的制作方式。首先第一个,我们可以去到阿里的图标库进行下载,这个支持github登录,大部分都可以免费使用,也有很多可以商用,合适的情况下最好问清楚一下制作者。从这里下载的图标也可以直接支持使用。拿到图标后,我们可以去到这个网站,进行转换,把有用的图标转换为ico。原创 2022-11-25 08:50:07 · 152 阅读 · 0 评论 -
前端js与二叉树
二叉排序树(1) 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值(查找最小值就是查找最左的节点)(2) 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值(查找最大值就是查找最右节点了)(3) 它的左、右子树也分别为二叉查找树function BinarySearchTree(keys){ //Node构造函数 let Node = function (key){ this.key = key //值 this.left = null//左值原创 2022-03-01 21:03:00 · 440 阅读 · 1 评论 -
js数组方法
会改变数组的方法:push() 添加pop() 删除数组的最后一个shift() 删除第一个unshift() 数组开头添加元素splice()reverse() 反转数组中元素的顺序forEach 遍历函数sort() 函数排序不会改变数组的方法:filter() 过滤concat() 合并两个数组slice() 从一个元素中选择元素map() map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果...原创 2022-03-01 20:17:01 · 62 阅读 · 0 评论 -
前端面试题3
1.不支持冒泡的事件事件冒泡是指当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发。通过addEventListener方法给Dom添加事件监听,addEventListener形参中的第三个参数控制是捕获传递触发还是冒泡传递触发。UI事件loadunloadscrollresize焦点事件blurfocus鼠标事件mouseleavemouseenter2.xss是啥xss(cross-site-scripting)攻击指原创 2022-02-28 23:19:24 · 379 阅读 · 0 评论 -
js监听滑动&element轮播图添加手指滑动
实习的时候遇到了大问题,项目要求我做左右滑动,然后切换年月份,结果不行,细细整理,发现了两个滑动函数的不同之处。第一个实现方案,左右滑动切换,顶部的年月切换,监听的是滚动距离首先是数据DevelopList遍历<div class="HomeDevelScoll" v-on:scroll="onHomeDevelScrollX"> <div v-for="item in DevelopList" :key="item.id" class="HomeDevelScollIte原创 2021-11-17 19:08:28 · 770 阅读 · 2 评论 -
js基本类型和引用类型以及深拷贝浅拷贝
一、JavaScript中值的类型JavaScript中的值分为2大类:基本类型和引用类型。每种类型下面又分为5种类型。基本类型: 数字类型:Number;字符串类型:String;布尔类型:Boolean(true和false);Undefined;Null。引用类型: 函数、数组、日期、正则、错误。注意:所有的引用类型都是对象,也就是Object对象下的一个类,对于基本类型,用等于号引入值的是里面的内容,修改新的值不会改变原来的值对于引用类型,用等于号引入值的是把地址传进去,修改新建原创 2021-11-13 11:56:41 · 757 阅读 · 0 评论 -
关于vue不用脚手架 为啥引入element不行的问题
关于vue不用脚手架 为啥引入element不行的问题很简单,你要在引入vuejs后再引入element,一个小问题,之前一直没有留意原创 2021-11-10 09:59:24 · 1017 阅读 · 0 评论 -
点击触发两次的bug----阻止冒泡
https://blog.csdn.net/u011085172/article/details/77574382/在写代码的时候发现了这个bug,阻止冒泡的时候发现很多难题,通过这个方法进行解决转载 2021-10-14 11:01:36 · 168 阅读 · 0 评论 -
事件冒泡和事件委托
https://www.cnblogs.com/moqing/p/5590216.htmlhttps://www.jb51.net/article/194440.htm转载 2021-10-07 17:38:12 · 93 阅读 · 0 评论 -
vue axios解决跨域问题
什么是跨域问题?简单的说就是浏览器(前端人员)跟服务器不同端,浏览器为了安全不允许再不同网络下的数据通信,不能传输数据的问题怎么解决跨域问题呢,就是设立一个代理服务器8080,跟浏览器8080同一个域,然后将服务器5000发过来的数据先发送给代理服务器8080,由于代理服务器跟浏览器同一个域,就可以方便的将代理服务器8080的数据给浏览器8080。代理服务器转发的数据浏览器就可以接收到了。不难理解首先第一步当然是引入axios包终端输入npm i axios引入axios包目前有两种方法进行原创 2021-09-11 08:55:12 · 647 阅读 · 0 评论 -
Vue全局事件总线详解
什么是事件总线我们之前的时候经常性是需要两个隔着老远的组件之间的通信,这个要是一层层的传递下去通信那真的是太麻烦了,所以才有了这个东西原理如下:在vue加载的时候设立一个公共的实例类型,我们的组件可以在这个全局的实例对象的原型上添加一个函数,等其他组件调用的时候再回调回来用这种方法进行通信。这个公共的实例对象必须是vue或者vc类型,不然没办法用到上面的用法1.给vue添加一个公共的实例类型打开main.js,添加方法1.若是vc类型的时候(演示而已,这个平时不会这样子写)const Demo原创 2021-09-07 16:04:53 · 2257 阅读 · 0 评论 -
js本地存储与vue的写法
什么是本地存储?简单来说就是本地信息存储-关闭浏览器后还可以看到简单的在写一下let p={name:'aa',age:18};//保存到本地 function saveData(){ localStorage.setItem('msg','hello!!!') localStorage.setItem('msg',666) localStorage.setItem('person',JSON.stringify(p))//对象改字符串 }//读取 fu原创 2021-09-07 10:53:06 · 251 阅读 · 0 评论 -
vue里面的ref详解
在以前的js中我们都是通过设置id,然后通过document.getelementbyid(hello) 来获取dom树进行操作,方便快捷。但是在vue框架里面,我们都是通过ref设置来获取参数的,这个东西有一个 好处,对于普通的元素比如button而言,他就是一个跟js一样的dom树获取,但是对于组件而言,就可以获取整个组件对象(VC),我们可以通过这种方式获取组件里面的内容进行操作我们用代码演示设立了两个ref获取的元素,一个是原生的button一个是组件<button @click="原创 2021-09-07 09:19:08 · 4298 阅读 · 0 评论 -
原型与原型链 详解
搞懂原型链之前一定要搞懂原型是啥搞懂原型之前要搞懂__proto__、 constructor和prototype是啥首先我们第一步就是引入一个概念,在js一切皆是对象(null和undefined不是),所以函数也是对象的一种。第二个就是任何函数都可以是构造函数,但是函数不是构造函数,函数被调用才是构造函数。比如://定义一个函数,那它只是一个普通的函数,不是构造函数var Parent = function(){ this.num=20, this.name="父类"}//相原创 2021-08-22 16:14:02 · 228 阅读 · 0 评论 -
js this指向问题详解
以函数形式调用时,this 永远都是 windowfunction aa(){ console.log(this)}aa();// 指向全局对象window以方法的形式调用时,如person.getname,this 是调用方法的对象,即对象本身对于vue,里面的this默认指向vue的实例const vm =new Vue({ el:"#root", data:{}, methods:{ showInfo(event){原创 2021-08-18 11:20:09 · 140 阅读 · 0 评论 -
vue事件修饰符
添加方法<a href="http://www.baidu.com" @click.prevent="showInfo2">事件修饰符按钮</a>常用修饰符的意思prevent:就是修饰符,阻止跳转stop:阻止事件冒泡,比如假设外面一层div还有一个click,就可以不用1后不会触发外面那个点击事件capture,跟上面的差不多once:只有第一次点击才会触发,点击玩后就不触发了...原创 2021-08-18 11:03:09 · 67 阅读 · 0 评论 -
vue与数据代理
数据代理就是通过一个对象代理对另外一个对象中属性的操作意思就是在另外一个对象里通过代理的方式来操作另外一个对象的值如图在obj2里面添加了队obj的x的读写方法 let obj={x:100} let obj2={y:100} Object.defineProperty(obj2,'x',{ get(){ return obj.x }, set(value){ obj.x=原创 2021-08-18 10:58:29 · 77 阅读 · 0 评论 -
Object.defineproperty方法与用处
给输入的内容进行修改对于对象而言,若是想插入一个值a,当值a改变的时候,对象里面的值a也改变,那必须要用到这个方法如下所示,插入到person后,急事修改number的值,调用person里面的age也不会改变let nunber=18; let person={ name:'这是', sex:'男', // age:Number }我们通过这个方法将num插入到person里面增添的不是num,而是对于外部num的读写方法get原创 2021-08-18 10:52:06 · 207 阅读 · 0 评论 -
js async和await的使用
async函数无论返回什么东西(数组,空),都会返回一个Promise类型的对象,使用方法很简单,在函数前面加上async即可promise是异步编程的新解决方案,语法上promise是一个构造函数,用来封装异步操作并可以获得其成功和失败的结果async function fn() { //若是返回一个Promise对象,就返回一个Promise对象。 return new Promise((resolve,reject)=>{原创 2021-08-14 17:29:31 · 503 阅读 · 0 评论 -
js判断数组里面有没有一个元素
//判断数组里面有没有const mingzu =['西游记','红楼梦','三国演义','水浒传'];console.log(mingzu.includes('西游记')); //true//判断console.log(mingzu.includes('金瓶梅'));console.log(2**10);//2的10次方原创 2021-08-14 17:19:34 · 320 阅读 · 0 评论 -
es6模块化,js与打包
模块化好处 防止命名冲突 代码复用 高维护性,这也是前端开发的新特性三种暴露的方法第一种,分别暴露export let school='分别暴露';export function teach(){ console.log("好好学习es6");}第二种,统一暴露 let school='统一暴露'; function teach(){ console.log("好好学习es6");}export {school,teach}默认暴露,这是最为常见的一种方式expo原创 2021-08-14 17:17:38 · 375 阅读 · 0 评论 -
js设置判断数字有限数 NaN 整数 正负
判断是否为有限数判断是否为NaN字符串转整数抹掉小数判断是否为整数判断是正负对象的合并 //判断是否为有限数 console.log(Number.isFinite(100)); //判断是否为NaN console.log(Number.isNaN(123)); //字符串转整数 console.log(Number.parseInt('123432shidsjc')); console.log(Number.parseFloat('1234.原创 2021-08-12 17:14:39 · 142 阅读 · 0 评论 -
js 比较两个数的大小 对象比较
判断两个值,对象是否相等?我们可以运用另外的一些写法 //EPSILON是js的最小精度,若是两个数的差小于这个值,代表着相等 function equal(a,b) { if(Math.abs(a-b)<Number.EPSILON){//两数的差的绝对值是否小于这个数 return true; } else{ return false; } } console原创 2021-08-12 17:11:50 · 943 阅读 · 0 评论 -
es6 var和let区别
用了let变量不能重复声明,var可以重复声明同样let作为块级作用域 全局,函数,eval出来以后就识别不了了{ let girl="董小姐"; //用了let出了{}就识别不到了 //同样if,while这些出了以后也识别不到 //之前没有申明元素之前,调用会显示undifine //es6规范,要是声明之前用,会提示报错 }...原创 2021-08-12 17:09:15 · 71 阅读 · 0 评论 -
es6规范的class使用方法
对于科班出身的程序员来说,class是啥玩意就不必哆嗦了,直接讲吧在之前规范的写法是这样子的//es5的常规用法 //手机 function phone(brand,price){ this.brand=brand; this.price=price; } //添加方法 //prototype是函数对象上面预设的对象属性 phone.prototype.call=function(){ console.lo原创 2021-08-12 16:43:23 · 348 阅读 · 0 评论 -
set实践与map实践 es6的设定 js
set是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。 let arr=[1,2,3,4,4,5,3,1]; //数组去重 let result=[...new Set(arr)];//将其变成set来去重 //交集 let arr2=[4,3,3,7,8,1]; // filter是数组过滤方法 result=[... new Set(arr)].filter(item=>{ let原创 2021-08-12 16:32:24 · 59 阅读 · 0 评论 -
promise链式操作
promise用来封装异步操作并可以获得其成功和失败的结果,我们首先看看正常的Promise是怎么样的//实例化对象 const p=new Promise(function (resolve,reject) { let data='数据库中的用户数据'; //原生ajax请求,没有接口就先不用这个了,但是我们可以这么李姐 // var xhr = new XMLHttpRequest(); // xh原创 2021-08-11 22:55:13 · 482 阅读 · 0 评论 -
es6生成器函数与异步操作 js
大家要是不知道es6生成器可以看看我的上一篇博客现在有个场景,假设需要异步操作,1s后输出111,2s后输出222,3s后输出333,你会怎么做?setTimeout?这个很不错,但是要是很多嵌套的话会导致一些麻烦事情,修改也不好修改,我们称之为回调地狱setTimeout(() => { console.log("回调地狱,太麻烦了"); setTimeout(() => { console.log("很多回调函数镶嵌的话就会像地狱原创 2021-08-11 21:32:52 · 137 阅读 · 0 评论 -
ES6生成器js详解(1)
生成器其实就是特殊函数,纯回调函数,可以进行异步编程,比如ajax,mongodb注意,一定要带*才是这种哦 function * gen(){ console.log("吴亦凡很大"); } let iterator=gen(); console.log(iterator);//返回一个迭代器方法 iterator.next();//输出吴亦凡我们在尝试一下怎么迭代里面的数据//由于他是一个迭代器的过程,所以他可以控制代吗运行 function原创 2021-08-11 19:03:52 · 60 阅读 · 0 评论 -
迭代器iterator,用来遍历 js
迭代器iterator,用来遍历数组(废话)原理 创建一个指针指向第一个,然后不停的指向下一个那究竟怎么用呢const xiyou=['跳转','孙悟空','猪八戒','深圳']; //使用for of遍历 for (let v of xiyou){ console.log(v); //返回的是键值 跳转,孙悟空,猪八戒,深圳 } for (let v in xiyou){ console.log(v);原创 2021-08-11 18:58:00 · 212 阅读 · 0 评论 -
ES6类型Symbol,js学习
这个是为了ES6规范化的一个很有用的东西,客套话就是:新的原始元素类型这个是为了用来解决命名冲突问题。多人协作的时候防止命名冲突而发明的他是怎么创建的?//创建let s=Symbol();let s2=Symbol('我我我');let s3=Symbol('我我我');console.log(s2===s3);//不相等console.log(s,typeof s);看上去不错,好像能解决一点命名规范问题,我们再来看看发生怎么使用比方说我们接收了一个js,我们要在game函数里面原创 2021-08-11 18:53:59 · 88 阅读 · 0 评论 -
js中ES6规范的扩展预算符
js中ES6规范的扩展预算符首先说明一下这个是啥将一个数组转换为用逗号隔开的参数序列,开发中主要用于数组合并和函数调用,是ES6 新增的语法。废话不多说,我们来尝试一下//扩展运算符 '...' 可以将数组转化为逗号分隔的参数序列 const tfboys=['易烊千玺','王源','王俊凯']; //声明函数 function chunwan(){ console.log(arguments); //arguments就是接收传进来的参数的意原创 2021-08-11 18:38:18 · 155 阅读 · 0 评论 -
es6中rest参数怎么使用
**es6引入rest参数,用于获取函数的实参,用来代替argument以往的写法(小学生写法)//老方法,返回的是对象 // function date(){ // console.log(arguments); // } // date('as','爱的','方式');全新的es6写法//es6,返回的是你传入的数据,//一般传一个数组,可以使用数组函数来对其进行使用 function date(a,...args){ console.原创 2021-08-11 18:31:44 · 198 阅读 · 0 评论 -
this指向不正确的问题
有时候es6设置的this指向有好处,在函数里面每一层的this都有不同的指向,所以我们每次都需要保存一次this,如下面的绑定1,但是用了es6的=>后就可以满足这类问题。同样的问题在vue项目和小程序项目中都是很重要的。下面需求:点击div2秒后颜色变成粉色 let ad=document.getElementById('ad');//绑定1ad,addEventListener("click",function(){ //定时器 //保存this的值,不然this指向会原创 2021-08-06 16:41:52 · 257 阅读 · 0 评论 -
js的call函数和this指向表达意思
js的call函数和this指向表达意思call这个方法表示的意思是改变this的指向。例如:function getName(){ console.log(this.name);}let getName2=()=>{ console.log(this.name);}//es6特性,this是静态的,是始终指向函数声明是所在作用域下的this的值window.name="我是你爸爸";const wowowo={ name:"ATFFFFF"}//直接调原创 2021-08-06 15:37:48 · 75 阅读 · 0 评论