03 2019 档案

有序数组最小空间复杂度最小时间复杂度去重
摘要:1 function sortedArrUniq(arr) { 2 let index = 1; 3 for (let i = 0; i < arr.length - 1; i++) { 4 if (arr[i] != arr[i + 1]) { 5 ... 阅读全文

posted @ 2019-03-21 21:04 时光游弋 阅读(613) 评论(0) 推荐(0)

Vue.use源码解析
摘要:首先判断传入的参数plugin的属性是否已被注册,如果存在且逻辑值为真,那么直接返回,后边的代码就不会在执行。 我们先假设plugin未被注册,那么继续往下执行 当执行toArray(arguments,1),会生成一个新数组ret,长度 = arguments.length-1,然后进行while 阅读全文

posted @ 2019-03-11 09:52 时光游弋 阅读(287) 评论(0) 推荐(0)

使用Set进行数组去重,求交并差
摘要:// 数组去重 let arr = [1, 1, 2, 3, 5, 8] let uniq = [...new Set(arr)] // 求两数组的交并差 let aArr = [1, 2, 3], bArr = [2, 3, 4] let unioin = [...new Set([...aAr... 阅读全文

posted @ 2019-03-10 16:36 时光游弋 阅读(336) 评论(0) 推荐(0)

实现vue中的$on $emit
摘要:var eventList = { 'sayName': [sayName] } var name = 'hehe' var age = 28 function sayName() { console.log(this.name) } funct... 阅读全文

posted @ 2019-03-10 15:38 时光游弋 阅读(1191) 评论(0) 推荐(0)

requestAnimationFrame与setTimeout的区别
摘要:以往常常使用 setTimeout 以及 setInterval 方法来制作 JavaScript 动画,但是这种方式制作的动画经常会由于计时器的特性而带来一些问题。简单地说一下,计时器动画有以下几个问题。 间隔时间不精确,可能被阻塞。计时器的间隔指的是将回调函数推入任务队列的间隔时间,任务队列中的 阅读全文

posted @ 2019-03-09 21:55 时光游弋 阅读(1724) 评论(0) 推荐(0)

XSS CRSF
摘要:1. XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞。指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的。比如获取用户的Cookie,导航到恶意网站,携带木马等。 阅读全文

posted @ 2019-03-09 16:15 时光游弋 阅读(203) 评论(0) 推荐(0)

HTTP 1.0 1.1 2.0区别
摘要:HTTP1.0 HTTP 1.1主要区别 长连接 HTTP 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而HTTP1.1默认支持长连接。 HTTP是基于TCP/IP协议的,创建一个TCP连接是需要经过三次握手的,有一定的开销,如果每次通讯都要重新建立连接的话,对性能有影响。 阅读全文

posted @ 2019-03-09 15:26 时光游弋 阅读(242) 评论(0) 推荐(0)

https 建立原理
摘要:https://www.jianshu.com/p/b0b6b88fe9fe 阅读全文

posted @ 2019-03-09 15:09 时光游弋 阅读(104) 评论(0) 推荐(0)

javascript 使用正则实现 trim方法
摘要:1 String.prototype.Trim = function() 2 { 3 return this.replace(/(^\s*)|(\s*$)/g, ""); 4 } 5 String.prototype.LTrim = function() 6 { 7 return this.replace(/(^\s*)/g, ""); 8 } 9 String... 阅读全文

posted @ 2019-03-08 20:39 时光游弋 阅读(401) 评论(0) 推荐(0)

javascript 实现有序列表合并
摘要:1. 使用数组 2. 链表 阅读全文

posted @ 2019-03-08 20:08 时光游弋 阅读(1221) 评论(0) 推荐(0)

javascript 链表
摘要:1 function Node(element) { 2 this.element = element 3 this.next = null 4 } 5 6 function Link() { 7 this.head = new Node('head')... 阅读全文

posted @ 2019-03-08 15:52 时光游弋 阅读(125) 评论(0) 推荐(0)

哈希表实现id,pid转树形结构
摘要:1 var source = [{ 2 id: 1, pid: 0, name: 'body'}, { 3 id: 2, pid: 1, name: 'title'}, { 4 id: 3, pid: 1, name: 'div'}, { 5 id: 4, pid: 3, name: 'span'}, { 6 id: 5,... 阅读全文

posted @ 2019-03-05 11:51 时光游弋 阅读(735) 评论(0) 推荐(0)

css实现每行三个位元素布局
摘要:1 2 3 4 5 6 7 布局排列 8 24 25 26 27 28 123 29 30 31 1... 阅读全文

posted @ 2019-03-05 11:04 时光游弋 阅读(1055) 评论(0) 推荐(0)

如何渲染几万条数据并不卡住界面
摘要:这道题考察了如何在不卡住页面的情况下渲染数据,也就是说不能一次性将几万条都渲染出来,而应该一次渲染部分 DOM,那么就可以通过 requestAnimationFrame 来每 16 ms 刷新一次。 阅读全文

posted @ 2019-03-04 16:07 时光游弋 阅读(221) 评论(0) 推荐(0)

javascript事件循环
摘要:js引擎遇到一个异步事件后并不会一直等待其返回结果,而是会将这个事件挂起,继续执行执行栈中的其他任务。当一个异步事件返回结果后,js会将这个事件加入与当前执行栈不同的另一个队列,我们称之为事件队列。被放入事件队列不会立刻执行其回调,而是等待当前执行栈中的所有任务都执行完毕, 主线程处于闲置状态时,主 阅读全文

posted @ 2019-03-03 21:19 时光游弋 阅读(154) 评论(0) 推荐(0)

javascript reduce用法
摘要:(1)计算数组中每个元素出现的次数 (2)数组去重 (3)将二维数组转化为一维 (3)将多维数组转化为一维 阅读全文

posted @ 2019-03-02 20:34 时光游弋 阅读(337) 评论(0) 推荐(0)

Javascript实现promise
摘要:1 // 三种状态 2 const PENDING = "pending"; 3 const RESOLVED = "resolved"; 4 const REJECTED = "rejected"; 5 // promise 接收一个函数参数,该函数会立即执行 6 function MyPromise(fn) { 7 let _this = this; 8 ... 阅读全文

posted @ 2019-03-02 19:46 时光游弋 阅读(259) 评论(0) 推荐(0)

Javascript手写call, apply, bind
摘要:call方法实现 apply方法实现 bind实现 阅读全文

posted @ 2019-03-02 18:19 时光游弋 阅读(180) 评论(0) 推荐(0)

Javascript已经排好序的数组,如何能快速找出a+b=8的所有组合的下标
摘要:使用哈希表实现,可以降时间复杂度降到O(n) 阅读全文

posted @ 2019-03-01 15:14 时光游弋 阅读(250) 评论(0) 推荐(0)

Javascript浅拷贝与深拷贝
摘要:浅拷贝是指只复制一层对象,当对象的属性是引用类型时,实质复制的是其引用,当引用指向的值改变时也会跟着变化; 深拷贝是指复制对象的所有层级。 1. 浅拷贝 浅拷贝的方法: Object.assign 可见,obj的a属性改变时,不影响obj1中a的改变;但引用类型,b中属性值的改变会同步到obj1。 阅读全文

posted @ 2019-03-01 10:26 时光游弋 阅读(175) 评论(0) 推荐(0)