摘要: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 ...
阅读全文
摘要:首先判断传入的参数plugin的属性是否已被注册,如果存在且逻辑值为真,那么直接返回,后边的代码就不会在执行。 我们先假设plugin未被注册,那么继续往下执行 当执行toArray(arguments,1),会生成一个新数组ret,长度 = arguments.length-1,然后进行while
阅读全文
摘要:// 数组去重 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...
阅读全文
摘要:var eventList = { 'sayName': [sayName] } var name = 'hehe' var age = 28 function sayName() { console.log(this.name) } funct...
阅读全文
摘要:以往常常使用 setTimeout 以及 setInterval 方法来制作 JavaScript 动画,但是这种方式制作的动画经常会由于计时器的特性而带来一些问题。简单地说一下,计时器动画有以下几个问题。 间隔时间不精确,可能被阻塞。计时器的间隔指的是将回调函数推入任务队列的间隔时间,任务队列中的
阅读全文
摘要:1. XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞。指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的。比如获取用户的Cookie,导航到恶意网站,携带木马等。
阅读全文
摘要:HTTP1.0 HTTP 1.1主要区别 长连接 HTTP 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而HTTP1.1默认支持长连接。 HTTP是基于TCP/IP协议的,创建一个TCP连接是需要经过三次握手的,有一定的开销,如果每次通讯都要重新建立连接的话,对性能有影响。
阅读全文
摘要:https://www.jianshu.com/p/b0b6b88fe9fe
阅读全文
摘要: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...
阅读全文
摘要:1 function Node(element) { 2 this.element = element 3 this.next = null 4 } 5 6 function Link() { 7 this.head = new Node('head')...
阅读全文
摘要: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,...
阅读全文
摘要:1 2 3 4 5 6 7 布局排列 8 24 25 26 27 28 123 29 30 31 1...
阅读全文
摘要:这道题考察了如何在不卡住页面的情况下渲染数据,也就是说不能一次性将几万条都渲染出来,而应该一次渲染部分 DOM,那么就可以通过 requestAnimationFrame 来每 16 ms 刷新一次。
阅读全文
摘要:js引擎遇到一个异步事件后并不会一直等待其返回结果,而是会将这个事件挂起,继续执行执行栈中的其他任务。当一个异步事件返回结果后,js会将这个事件加入与当前执行栈不同的另一个队列,我们称之为事件队列。被放入事件队列不会立刻执行其回调,而是等待当前执行栈中的所有任务都执行完毕, 主线程处于闲置状态时,主
阅读全文
摘要:(1)计算数组中每个元素出现的次数 (2)数组去重 (3)将二维数组转化为一维 (3)将多维数组转化为一维
阅读全文
摘要:1 // 三种状态 2 const PENDING = "pending"; 3 const RESOLVED = "resolved"; 4 const REJECTED = "rejected"; 5 // promise 接收一个函数参数,该函数会立即执行 6 function MyPromise(fn) { 7 let _this = this; 8 ...
阅读全文
摘要:call方法实现 apply方法实现 bind实现
阅读全文
摘要:使用哈希表实现,可以降时间复杂度降到O(n)
阅读全文
摘要:浅拷贝是指只复制一层对象,当对象的属性是引用类型时,实质复制的是其引用,当引用指向的值改变时也会跟着变化; 深拷贝是指复制对象的所有层级。 1. 浅拷贝 浅拷贝的方法: Object.assign 可见,obj的a属性改变时,不影响obj1中a的改变;但引用类型,b中属性值的改变会同步到obj1。
阅读全文