- 博客(19)
- 收藏
- 关注
原创 根据Promise/A+规范自己实现一个Promise
Promise/A+规范中文翻译:http://www.ituring.com.cn/article/66566PromisePromise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大Promise 的三种状态Pending Promise对象实例创建时候的初始状态Fulfilled 可以理解为成功的状态Rejected 可以理解为失败的状态...
2019-07-23 15:44:09 479
原创 TypeScript中的接口和泛型
接口TypeScript的核心原则之一是对值所具有的结构进行类型检查。 它有时被称做“鸭式辨型法”或“结构性子类型化”。 在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。// 接口// TypeScript的核心原则之一是对值所具有的结构进行类型检查。// 在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。in...
2019-06-28 19:16:10 972
原创 TypeScript中的函数与类
TypeScript中的类传统的JavaScript程序使用函数和基于原型的继承来创建可重用的组件,但对于熟悉使用面向对象方式的程序员来讲就有些棘手,因为他们用的是基于类的继承并且对象是由类构建出来的。 从ECMAScript 2015,也就是ECMAScript 6开始,JavaScript程序员将能够使用基于类的面向对象的方式。 使用TypeScript,我们允许开发者现在就使用这些特性,并...
2019-06-27 16:45:13 1008
原创 TypeScript中的数据类型这一篇就够了
TypeScript 简介TypeScript 由 Microsoft开发和维护的一种开源编程语言。 它支持 JavaScript 的所有语法和语义,同时通过作为 ECMAScript 的超集来提供一些额外的功能,如类型检测和更丰富的语法。下图显示了 TypeScript 与 ES5,ES2015,ES2016 之间的关系。废话不多说,ts其他的一些也不用我介绍了,网上一大堆。数据类型/...
2019-06-26 16:28:40 2738
原创 HTTP首部各字段含义与常见状态码
HTTP首部各字段含义首部分为请求首部和响应首部,并且部分首部两种通用。通用字段(作用)Cache-Control(控制缓存的行为)Connection(浏览器想要优先使用的连接类型,比如 keep-alive)Date(创建报文时间)Pragma(报文指令)Via(代理服务器相关信息)Transfer-Encoding(传输编码方式)Upgrade(要求客户端升级协议)Wa...
2019-06-17 17:53:04 509
原创 如何判断一个对象是否为空{}
我们想要判断对象是否为空,像基本类型那样判断是不可以的, ==={} ?这样是错误的,因为只是比较引用地址是否相同,所以可以采取下面的方法来进行判断1.根据for...in遍历对象,如果存在则返回true,否则返回falsefor ( let i in obj) { return true;}return false2.利用JSON自带的JSON.stringify()方法来判断...
2019-05-28 12:34:57 27142
原创 js链表实现与链表反转和合并有序链表
本文全部都为单向链表链表存储有序的元素集合,但不同于数组,链表中的元素在内存中并不是连续放置的。每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成。下图展示了一个链表的结构:下面我们来实现一个链表以及链表中的方法//定义链表 function LinkList(){ //定义一个节点类 var N...
2019-03-28 17:55:44 370
原创 js数组实现队列数据结构与练习使用
队列定义队列是遵循FIFO(First In First Out,先进先出,也称为先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。在现实中,最常见的队列的例子就是排队:但是不能插队下面我们来实现一个队列//定义一个队列 function Queue(){ var items = []; // 存储数...
2019-03-26 17:44:16 334
原创 js数组实现栈数据结构与练习使用
栈的定义栈是一种特殊的线性表,栈是一种遵从后进先出(LIFO)原则的有序集合。新添加的或待删除的元素都保存在栈的同一端,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。在现实生活中也能发现很多栈的例子。例如,下图里的羽毛球桶就是一个例子下面我们来实现一个栈function Stack(){ var items = []; //存储数据 ...
2019-03-25 17:23:10 390
原创 react中触发事件实现路由跳转
路由跳转我们可以用Link标签,但是Link标签不会校验对错,有时候会不符合业务,所以今天我们就用事件来跳转路由react-router版本 “react-router-dom”: “^4.3.1”首先引入withRouterimport {withRouter} from 'react-router-dom';并切在导出时候用这个方法包裹住export default connect...
2019-03-21 16:01:35 7723
原创 解析 ['1', '2', '3'].map(parseInt)
第一眼看到这个题目的时候,脑海跳出的答案是 [1, 2, 3],但是 真正的答案是 [1, NaN, NaN]。首先让我们回顾一下,map 函数的第一个参数 callback:var new_array = arr.map(function callback(currentValue[, index[, array]]) { // Return element for new_array...
2019-03-20 10:01:21 1429
原创 async 和 await
ES2017 标准引入了 async 函数,使得异步操作变得更加方便。async 函数是什么?一句话,它就是 Generator 函数的语法糖。一个函数如果加上 async ,那么该函数就会返回一个 Promiseasync function test() {return "1";}console.log(test()); // -> Promise {<resolved&...
2019-03-19 10:50:22 232
原创 浅谈js的防抖和节流
我们工作中遇到防抖和节流的频率相当高,处理不当或者放任不管就容易引起浏览器卡死。防抖在第一次触发事件时,不立即执行函数,而是给出一个期限值比如200ms,然后:如果在200ms内没有再次触发滚动事件,那么就执行函数。如果在200ms内再次触发滚动事件,那么当前的计时取消,重新开始计时。效果:如果短时间内大量触发同一事件,只会执行一次函数。实现:既然前面都提到了计时,那实现的关键就在...
2019-03-15 15:58:42 360
原创 二次封装el-button实现的vue权限按钮组件
由于楼主公司之前做了一个带权限管理的系统,所以今天给大家分享一下我是如何处理前端按钮级别权限的整体思路就是如何通过v-if控制前端按钮的显示与隐藏项目是基于vue和element开发的,所以按钮我是拿el-button二次封装了一下,项目中用到了vuex 所以我们把从后台拿到的数组格式的按钮集合的数组存在了vuex中 集合中存入的当前按钮的标识我采用的命名规则是 按钮所在文件夹名字:按钮所...
2019-03-13 15:44:29 5244
原创 CSS3实现的圆点加载动画
<!doctype html><html><head> <meta charset="utf-8"> <title>CSS3加载动画</title> <style> body { overflow: hidden;
2019-03-12 16:55:03 1439
原创 用Proxy模拟VUE中的数据双向绑定
Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。详细介绍也...
2019-03-11 17:08:57 484
原创 前端如何渲染几万条数据不卡住页面?
如何渲染几万条数据不卡住页面?也就是说不能一次性将几万条数据都渲染出来,而是应该一次渲染一部分DOM,那么可以通过requestAnimationFrame 来每 16 ms 刷新一次。window.requestAnimationFrame() 告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。该方法需要传入一个回调函数作为参数,该回调函数会在浏览器下一...
2019-03-08 09:34:16 19489 1
原创 js中闭包常见面试问题
function A() {let a = 1function B() {console.log(a)}return B}从代码中就可以大概看出闭包的定义:函数 A 返回了一个函数 B,并且函数 B 中使用了函数 A 的变量,函数 B 就被称为闭包。经典面试题,循环中使用闭包解决 var 定义函数的问题for ( var i=1; i<=5; i++) {setTime...
2019-03-05 21:26:45 834
原创 谈一谈js中的深拷贝与浅拷贝
深浅拷贝let a = {age: 1}let b = aa.age = 2console.log(b.age) // 2从上述例子中我们可以发现,如果给一个变量赋值一个对象,那么两者的值会是同一个引用,其中一方改变,另一方也会相应改变。通常在开发中我们不希望出现这样的问题,我们可以使用浅拷贝来解决这个问题。浅拷贝首先可以通过 Object.assign 来解决这个问题。l...
2019-03-04 16:46:43 324
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人