随笔分类 - JavaScript学习心得
摘要:事件派发dispatchEvent dispatchEvent 向指定目标事件派发一个事件;一般的事件触发是用户进行某些操作时才会触发,而使用dispatchEvent可以在代码中手动触发事件。 定义事件的目的就是为了执行某一方法,手动触发事件的目的也是执行该事件下的方法。 window.onloa
阅读全文
摘要:一、背景 前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这个步骤是
阅读全文
摘要:ES6中Promise可以说很大情况下改善了异步回调的嵌套问题,那么如果我们自己去写一个类似Promise的库应该怎么去写? 我们先看一下Promise的特点: 第一:Promise构造函数接受一个函数作为参数,函数里面有两个参数resolve和reject分别作为执行成功或者执行失败的函数 var
阅读全文
摘要:一、js中new一个对象的过程 首先了解new做了什么,使用new关键字调用函数(new ClassA(…))的具体步骤: 1、创建一个新对象: var obj = {}; 2、设置新对象的constructor属性为构造函数的名称,设置新对象的__proto__属性指向构造函数的prototype
阅读全文
摘要:通常用window.location该属性获取页面 URL 地址: 1、什么是window.location? 比如URL:http://b.a.com:88/index.php?name=kang&when=2011#first window.location和document.location互
阅读全文
摘要:这个题目不约而同的出现在了多家公司的面试题中,当然也是因为太过于典型,解决方案无非就是拆字符或者用正则匹配来解决,我个人强烈建议用正则匹配,因为url允许用户随意输入,如果用拆字符的方式,有任何一处没有考虑到容错,就会导致整个js都报错。而正则就没有这个问题,他只匹配出正确的配对,非法的全部过滤掉,
阅读全文
摘要:一、Base64编码介绍 1、Base64解决了什么问题 假如我们要在网络中传输下面的问题 你好 小朋友 我是砖家 你是谁? 这段文本中包含了空格、换行、回车等不可见字符,在网络传输中,各个设备对不可见字符处理机制可能不同,会存在信息传输错误的情况。此时我们就需要一种编码机制,把不可见字符统统转成可
阅读全文
摘要:一、解决方案 1、方案一:使用 iframe、embed、新窗口打开。使用方式如下: <embed src="test.pdf"> <iframe src="test.pdf"></iframe> 优点:简单,支持大部分 PC 浏览器,跨域资源同样可以(无需 cors) 缺点:不支持移动端浏览器,不
阅读全文
摘要:先来看一个问题: 在之前看过的许多javascript书籍中,都宣称js是可以使用字符串作为数组下标的,因此我在用的时候也没觉得有什么不妥。但是在查看最后一句的控制台输出结果的时候,始料未及的情况出现了:length为0 显示的数组的length值居然是零,接着测试一下之前的步骤是否成功对数组进行了
阅读全文
摘要:一般来说,JavaScript中的数组是稀疏的。 什么是稀疏呢?稀疏也就是说,数组中的元素之间可以有空隙,因为一个数组其实就是一个键值映射。本文解释了如何创建稀疏数组和不稀疏的数组。 1、稀疏数组 创建一个指定长度的稀疏数组很简单: 当你遍历它时,你会发现,它并没有元素,JavaScript会跳过这
阅读全文
摘要:问题1:如果实现了dom拖拽功能,但是在绑定拖拽事件的时候发现每当元素稍微移动一点便触发了大量的回调函数,导致浏览器直接卡死,这个时候怎么办? 问题2:如果给一个按钮绑定了表单提交的post事件,但是用户有些时候在网络情况极差的情况下多次点击按钮造成表单重复提交,如何防止多次提交的发生? 为了应对如
阅读全文
摘要:一、什么是节流和去抖? 1、节流 节流就是拧紧水龙头让水少流一点,但是不是不让水流了。想象一下在现实生活中有时候我们需要接一桶水,接水的同时不想一直站在那等着,可能要离开一会去干一点别的事请,让水差不多流满一桶水的时候再回来,这个时候,不能把水龙头开的太大,不然还没回来水就已经满了,浪费了好多水,这
阅读全文
摘要:在移动端,有个很重要的概念,叫做懒加载,适用于一些图片资源特别多,ajax数据特别多的页面中,经常会有动态加载数据的场景中,这个时候,我们通常是使用监听scroll或者使用setInterval来判断,元素是否进入视图,其中scroll由于其特别大的计算量,会有性能问题,而setInterval由于
阅读全文
摘要:一、问题背景 有时候我们经常会遇到接口请求慢的情况,下意识里会觉得是后端接口返回的问题。其实还真不一定,这个需要具体情况具体分析,可以从控制台network具体分析 鼠标悬浮到 network 接口请求的 waterfall 上就会看到该接口的具体耗时。可以看到:queue 队列、stalled 暂
阅读全文
摘要:数组在各个编程语言中的重要性不言而喻,但是在之前的JavaScript中数组虽然功能已经很强大,但操作方法并不完善,在ECMAScript5中做了适当的补充。 Array.isArray(element) 这是Array对象的一个静态函数,用来判断一个对象是不是数组 .indexOf(element
阅读全文
摘要:一、作用 setTimeout 第三个及之后的参数作用:定时器启动时候,第三个以后的参数是作为第一个fn()的参数传进去 // setTImeout 第三个及以后参数是作为第一个函数 fn 的参数传入 setTimeout(fn, 1000, 1, 2) function fn (x, y) { c
阅读全文
摘要:一、bind()方法的实现 在JavaScript中,方法往往涉及到上下文,也就是this,因此往往不能直接引用。就拿最常见的console.log("info…")来说,避免书写冗长的console,直接用log("info…")代替,不假思索的会想到如下语法: 很遗憾,运行报错:TypeErro
阅读全文
摘要:先说结论:几种遍历方法中for执行最快,它没有任何额外的函数调用栈和上下文。但是是不是就一定直接使用 for 循环呢?这个也不好说,我们在实际开发中需要结合语义话、可读性和程序性能,去选择究竟使用哪种方案。 一、5种遍历对比 1、for语句 是最原始的循环语句。定义一个变量i(数字类型,表示数组的下
阅读全文
摘要:一、Number.EPSILON 是什么 Number.EPSILON 属性表示 1 和大于 1 的最小值(可表示为 Number)的差值。可直接使用 Number.EPSILON 来访问这个静态属性。 Number.EPSILON属性的属性特性:Writable、Enumerable、Config
阅读全文
摘要:最近用到<a>标签实现文件下载并对文件进行重新命名,遇到了一些问题,文件重命名一直失败,所幸最终还是解决了,在此记录一下,避免后来者踩坑。 一、问题背景 我们先看一下问题背景:HTML <a> 元素可以创建一个到其他网页、文件、同一页面内的位置、电子邮件地址或任何其他URL的超链接,其中href和d
阅读全文