自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

imkaifan的博客

前端工程师

  • 博客(38)
  • 资源 (10)
  • 收藏
  • 关注

原创 boder渐变色

1、用border、border-image、linear-gradient <div class="content"></div>.content { width: 100px; height: 100px; border: 4px solid blue; border-image: -webkit-linear-gradient(red, yellow) 30 30; border-image:

2021-05-31 10:20:19 366

脱敏处理

需求:查看的时候from表单进行脱敏处理,例如:凡夫俗子 脱敏:凡**子 /** * flag 编辑或者查看 * value from-item值 * needWs需要隐藏几位 */ function handleStr (flag,value,neddWs) { if(flag =="look") { if(value.length%2 == 1) {

2021-05-21 15:50:55 318

原创 中英文全角切换

cxccd原因:这是因为你不小心打开了英文全角切换解决:怎么关闭和开启? shift+空格键

2021-05-20 14:53:56 231

原创 继承

继承: Son.prototype = new Father(),这个位置也有讲究,一定要在new新的儿子之前把原型链的继承给建立起来。原型对象和实例都有__proto__ 属性,可以完美契合。继承说白了就是用一个构造函数的实例重写了另一个构造函数的原型<script> function Father() { this.name = "爸爸"; }; Father.prototype.age = '999'; .

2021-05-20 11:17:49 76

原创 原型链(最详细)

都是代码人,用代码交流吧,上代码:初级原型链:<script> //构造函数 function Person() { }; //实例(每个实例对象都有一个__proto__属性指向原型对象) var zhang = new Person(); //原型对象(每个函数都有一个prototype属性指向原型对象) Person.prototype; // 原型对象又.

2021-05-20 10:22:50 689 1

原创 Object.keys(),Object.getOwnPropertyNames(),getOwnPropertyNames

1、要取得对象上所有可枚举的实例属性,可以使用ECMAScript 5的Object.keys()方法。这个方法接收一个对象作为参数,返回一个包含所有可枚举属性的字符串数组跟for in相比:如果原型对象上也有开发者自己添加的属性和方法,for in管给他循环出来。但是Object.keys()只针对实例上的可枚举属性。2、你想要得到所有实例属性,无论它是否可枚举,都可以使用Object.getOwnPropertyNames()方法<script> // 要取得对象

2021-05-19 14:59:32 216

原创 对象for in

如果在原型对象上挂载属性也都会被for in出来,但是例如 hasOwnProperty()、propertyIsEnumerable()、toLocaleString()、toString()和valueOf()还有constructor的可枚举属性都会被置为false,所以不会枚举出来。 function Book() { }; Book.prototype.name = "围城"; var book1 = new Book();

2021-05-19 14:39:41 264

原创 原型对象(二)

构造函数实例对象可以访问原型对象上公共的属性和方法。问题:1、实例对象不能修改原型对象上的属性和方法。2、命名冲突了,实例对象上的会覆盖原型对象。<script> function Person(name, age, sex) { this.name = name; this.age = age; this.sex = sex; } var ldh = new Person("liudehua", 26

2021-05-19 14:03:46 68

原创 原型对象(一)

<script> function Person(name, age, sex) { this.name = name; this.age = age; this.sex = sex; } var ldh = new Person("liudehua", 26, "man"); console.log(ldh); //Person {name: "liudehua", age: 26, sex: .

2021-05-19 10:47:04 118

原创 编程思想,面向过程,面向对象编程

两种编程思想:面向过程和面向对象。面向过程编程POP(Process-oriented programming)面向过程就是分析出解决问题所需步骤,然后把这些步骤。一步一步用函数实现,使用的时候一个一个的进行调用函数。大象塞进冰箱:打开门->塞大象->关门面向对象编程OOP(Object Oriented Programming)面向对象是把事物分解成为一个个对象,然后对象之间分工与合作。面向对象是以对象功能来划分问题,而不是步骤 大象塞进冰箱:1、大象有一个功能:进去 。2、

2021-05-18 17:11:44 214

原创 构造函数,工厂函数,构造函数创建对象,new操作符都干了什么

工厂函数:function createPerson(name,age,sex) { var o = new Object(); o.name = name; o.age = age; o.sex = sex; o.sayName = function() { console.log(this.name) } return o;}构造函数创建对象:// 构造函数约定俗成的 第一个字母需要大写// 构造函数本身也是函数,只不过

2021-05-18 14:39:49 186

原创 柯里化(入门)

柯里化: 柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数, 并且返回接受余下的参数且返回结果的新函数的技术。 另一种叫法:部分计算函数。 柯里化使用了递归,闭包,高阶函数等技术。 高阶函数:接受一个函数类型的参数或者返回一个函数的函数。// 普通的add函数function add(x, y) { return x + y;};// Currying后function curryingAdd(x) { r

2021-05-17 18:10:21 131

原创 闭包,js闭包

闭包之前补几处个知识点:变量作用域:1、函数内部可以使用全局变量。2、函数外部不可以使用局部变量3、函数执行完毕,本作用域内的局部变量会销毁浏览器垃圾回收机制:当声明了一个变量并将一个引用类型值赋给该变量时,则该值的引用次数就是1;如果同一个值又被赋给另一个变量,则该值的引用次数加1;如果包含对该值引用的变量又取得了另外一个值,则该值的引用次数减1。当该值的引用次数变为0时,则可以回收其占用的内存空间。当垃圾回收器下一次运行时,就会释放那些引用次数为0的值所占用的内存。闭包是什么:

2021-05-17 17:50:29 117

原创 string方法,字符串方法

// string自身属性var str = 'hello,world';console.log(str.length) // /** * 字符方法 * 根据索引返回索引处的值,charAt()方法以单字符字符串的形式返回给定位置的那个字符 * 如果你想得到的不是字符而是字符编码,那么就要像下面这样使用charCodeAt() */console.log(str.charAt(1)) // econsole.log(str.charCodeAt(1))// 101/** * 字符串

2021-05-17 16:01:12 142

原创 toPrecision,num.toPrecision()

let num1 = 80000000000;console.log(typeof num1); //numberconsole.log(num1.toPrecision(1)); //8e+10console.log(typeof num1.toPrecision(1));//stringlet num2 = 99;//代表的是有多少位数console.log(num2.toPrecision(1));//1e+2console.log(num2.toPrecision(2));//99

2021-05-17 12:46:22 146

原创 toFixed(),Number的toFixed()

var num = 12;console.log(typeof num) // numberconsole.log(num.toFixed(4)) //12.0000console.log(typeof num.toFixed(4)) //string可以按照指定的小数位返回数值的字符串表示

2021-05-17 12:33:23 204

转载 @param,JavaScript的@param注解

@param是对函数参数进行解释作用,大型项目所用最近在看vue2.x的源码,看到如下代码:/** * Teardown partial linked directives. * * @param {Vue} vm * @param {Array} dirs * @param {Boolean} destroying */function teardownDirs (vm, dirs, destroying) { var i = dirs.length while (i--).

2021-05-17 10:39:38 6202 2

原创 虚拟DOM,Virtual DOM,virtual dom

虚拟DOM的文章现在已经很多了,但是如何紧密结合vue中,到实际的运用是我们分析的重点,这里只是粗略下。原理:简单的说,直接通过JS操作浏览器API去绘制DOM节点是很慢的,大量的页面处理中,开发者不经意就会调用更多多余或者重复的操作,这种是有性能开销的。那么有什么办法减少这种是误操作呢?就是通过一种方式能算出来最小的更新量,从而提高效率。既然要计算出对小的更新量,那么就会有对比,需要通过对新旧两个节点的对比从而计算出。DOM的操作很慢,但是JS确很快的,DOM 树上的结构、属性信息我们都可以很容易地用

2021-05-17 10:28:34 159

原创 什么是区块链,区块链是什么,区块链

每一项技术的产生都是伟大的创造,常常惊叹于它的美丽,奇思妙想,独辟蹊径,精彩绝伦。每一项技术的设计者都是历史学家,经济学家,哲学家,思想家,生活中的观察者,发现家、领导者,制度的建设者,king,他可能不是技术人,但是他一定是前几项。一、历史公元前3000年左右,美索不达米亚平原南部的苏美尔人用削成三角尖头的芦苇杆将文字刻写在泥板上,然后将泥板烘干以便于保存,最早的文字,锲形文字。板上记载的内容不是诗歌也不是哲学,而是生意。美索不达米亚文明属于城邦文明,发展出了丰富的商业行为。他们记录在泥板上的,就是

2021-05-15 00:35:59 143 1

原创 函数中的this

this引用的是函数执行的环境对象调用函数之前,this的值并不确定,因此this可能会在代码执行过程中引用不同的对象函数的名字仅仅是一个包含指针的变量而已。因此,即使是在不同的环境中执行,全局的sayColor()函数与o.sayColor()指向的仍然是同一个函数。<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv

2021-05-14 15:16:03 97

原创 js创建函数的三种方式、区别

创建函数// 1、函数声明语法function sum (val1,val2) { return (val1+val2); };// 2、函数表达式 let sum = function(val1,val2) { return (val1 + val2)}// 3、构造函数接收多个参数,最后一个函数默认是函数体不推荐,会解析两次。第一次是解析常规ECMAScript代码,第二次是解析传入构造函数中的字符串,性能损耗。不推荐var sum = new Function('va

2021-05-14 10:58:53 166

原创 js的函数重载

什么是函数重载一个函数有两个功能,只是重复利用了这个函数名。函数重载有什么好处如果不使用重载,那么就要有多个个不同的函数,来完成功能,那我们就需要记住5个不同的函数名,和各个函数相对应的参数的个数和类型,显然就麻烦多了。ECMAScript函数不能像传统意义上那样实现重载,是因为ECMAScript函数没有签名,因为其参数是由包含零个或多个值的数组 arguments 或 命名参数 来表示的。而在其他语言中(如Java)中,可以为一个函数编写两个定义,只要这两个定义的签名(接受的参数的类型和数量)不

2021-05-14 10:34:57 306

原创 array方法汇总

1、所有对象都有的方法,toString(),toLocalString(),valueOf()方法引申出 join。2、栈方法:push() pop()3、队列方法: unshift() shift()4、排序: reverse() sort()5、位置方法:indexOf() lastIndexOf()6、操作数组方法: concat() slice() splice()7、循环方法: every() some() filter()返回为true的值 ma

2021-05-13 17:24:43 467

原创 递归排序法,数组排序,快排

熟悉一下什么是递归// 一个简单的阶乘函数 var f = function (x) { if (x === 1) { return 1; } else { return x * f(x - 1); } }var b = f(4)// 执行过程// 4*f(3) 4*3*f(2) 4*3*2*f(1)console.log(b)递归排序也就是:快排(1)从数列中取出一个数作为参考,分区过程。

2021-05-12 16:13:29 200

原创 js中小于等于,大于等于的写法

小于等于: <=大于等于: >=

2021-05-12 15:42:06 11062

原创 Math.ceil(),Math.floor(),parseInt(),Math.round()

let a = 5.1; let b = 6.4;let c = 7.5;let d = 7.6;// 向上取整console.log(Math.ceil(a)) // 6console.log(Math.ceil(b)) // 7 console.log(Math.ceil(c)) // 8console.log(Math.ceil(d)) // 8// 向下取整console.log(Math.floor(a)) // 5console.log(Math.floor(b)

2021-05-12 13:51:39 155

原创 js中的异步操作

JS中的异步操作:1、定时器都是异步操作2、事件绑定都是异步操作3、AJAX中一般我们都采取异步操作(也可以同步)4、回调函数可以理解为异步(不是严谨的异步操作)

2021-05-12 11:02:15 185

原创 开放文档和公众文档区别

微信公众平台是服务于广大个人、企业等终端用户。微信开放平台是服务于广大开发者,也就是说需要懂技术开发,要会写代码才能操作,我们普通用户是操作不了的,所有第三方都是基于微信开放平台调用微信开发的接口权限,看开发文档做对应的功能开发,然后我们广大普通用户又可以使用第三方开发出来的现成功能模板。...

2021-05-12 10:57:41 145

原创 选择排序法,数组排序,排序

<script> var arr = [1, 4, 2, 9, 3, 0]; function xuanze(array) { if (Array.isArray(array)) { if (array.length == 1 || array.length == 0) { return array; } for (var i = 0; i < array.lengt

2021-05-11 14:57:42 139

原创 冒泡排序,数组排序

var arr = [2,8,5,7] function bubbling(arr) { //不是数组还比个锤子 if(Array.isArray(arr)) { //数组只有一项或者是空数组还有必要比么? if (arr.length == 1 || arr.length ==0) { return } //交换两个数,还有一种骚

2021-05-11 10:07:23 191

原创 表单验证身份证,表单验证手机号

rules: { //手机号 tel: [ { type: 'number', required: true, message: '请输入手机号', trigger: 'blur' }, { pattern: /^0{0,1}(13[0-9]|15[7-9]|153|156|18[7-9])[0-9]{8}$/,

2021-05-10 15:10:20 361

原创 new操作符

function fn() { console.log(this instanceof fn); console.log(this) } fn.prototype.a = 111 fn() let aa = new fn() console.lo...

2021-05-10 10:51:36 142 1

原创 判断数据类型

js的引用类型有: Object类型 Array类型 Date类型 RegExp类型 Function类型简单数据类型: typeof确定一个值是哪种基本类型可以使用typeof操作符。typeof是一个操作符而不是函数,因此例子中的圆括号尽管可以使用,但不是必需的。var a = null; typeof(a) 结果是:Object var b; typeof(b) 结果是:undefined复杂数据类型:instanceof确定一个值是哪种引用类

2021-05-10 10:20:47 114

原创 百度搜索框效果,搜索框搜索建议

代码 (直接粘贴进去即可使用):<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" .

2021-05-08 15:22:09 338

原创 vue-quill-editor粘贴图片,vue-quill-editor复制图片

vue-quill-editor复制图片实际上会以:base64形式的进行一个上传,base64写进数据库那不是gg。解决思路: 将复制的图片上传至服务器,将服务器返回的图片地址作为img标签插入富文本编辑器中。此功能是在已有功能上的增加用户体验,基础构建代码请看这里代码(vue项目): mounted() { // 自定义粘贴图片功能 let quill = this.$refs.myQuillEditor.quill; this.$forceUpdate();

2021-05-07 13:49:42 3559 2

原创 页面刷新vuex数据丢失

vue项目中:vuex存放数据和路由传参 是比较相像的------在页面刷新的时候数据丢失路由传参丢失,参考这篇文章//全局监听,页面刷新的时候将store里state的值存到sessionStorage中,然后从sessionStorage中获取,再赋值给store。然后再把session里面存的删除即可,相当于中间件的作用。//在页面加载时读取sessionStorage里的状态信息 if (sessionStorage.getItem("store")) { this.$

2021-05-06 15:13:39 68

原创 事件循环,event loop

事件循环,event loop的重要概念:1、Javascript是单线程的,所有的同步任务都会在主线程中执行。2、当主线程中的任务,都执行完之后,系统会 “依次” 读取任务队列里的事件。与之相对应的异步任务进入主线程,开始执行。3、==异步任务之间,会存在差异,所以它们执行的优先级也会有区别。==大致分为 微任务(micro task,如:Promise、MutaionObserver等)和宏任务(macro task,如:setTimeout、setInterval、I/O等)。4、Promis

2021-05-06 10:28:24 65

原创 防抖和节流,情景讲解,代码讲解,防抖和节流二者区别

防抖和节流,情景讲解,代码讲解,防抖和节流二者区别防抖节流防抖和节流二者区别防抖防抖可以利用插件解决:lodash;防抖是什么:防抖策略(debounce)是当事件被触发后,延迟n秒后再执行回调函数,如果在这n秒事件又被触发则重新计时。类比:英雄回城。防抖的实际应用: 输入框防抖代码Var timer = null //1、防止抖动的timerFunction debounceSearch(keywords) { //2、定义防抖函数timer = setTimerout(functio

2021-05-06 10:02:17 224

远程工具 远程工具 远程工具

远程工具 远程工具 远程工具

2023-08-12

xml 传输demo323232

xml demo

2023-07-30

TortoiseSVN-64

TortoiseSVN-64

2022-03-09

git工具:TortoiseGit

git工具:TortoiseGit;小乌龟

2022-02-25

有道云笔记windows(x64)

有道云笔记windows(x64)

2022-02-24

VideoWebPlugin.exe

海康视频插件

2021-07-20

238道大厂前端高频面试题.pdf

238道大厂前端高频面试题

2021-03-24

cross-request-master.zip

cross-request YApi 跨域请求

2021-03-22

vue全家桶之路由的详细说明md文档

vue全家桶之路由的详细说明md文档

2021-03-05

Snipaste-1.16.2-x86.zip

强大的截图软件,可以快捷键F1、F3钉图,非常方便。简小,不占内存。Snipaste开发人员必备的工具,很方便。

2020-04-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除