摘要:
前端性能优化的方法有很多,本文主要介绍开发中比较常用的几种优化手段 文件合并 网页中的每一个外部文件的下载都会发送一个HTTP请求,常见的有css、js、img等。合并文件能有效的减少HTTP的请求,比较有效的做法是把公共库文件合并到一个文件,因为这些文件基本不会变动,把不同页面独有的文件单独合并, 阅读全文
posted @ 2021-09-29 14:24
wmui
阅读(1004)
评论(0)
推荐(0)
摘要:
引入 正则表达式(Regular Expression)是一门简单语言的语法规范,是强大、便捷、高效的文本处理工具 JavaScript中的正则表达式用RegExp对象表示,由两种写法:字面量写法和构造函数写法 字面量写法 正则表达式字面量定义为包含在一对斜杠/之间的字符,并且可以设置3个标志 正则 阅读全文
posted @ 2021-09-29 14:23
wmui
阅读(442)
评论(0)
推荐(0)
摘要:
本篇文章主要介绍RegExp对象以及RegExp的实例的属性和方法,如果对于正则的基础语法还不是很清楚,可以参考下 "RegExp基础语法" 这篇文章 实例属性 RegExp实例都包含下面5个属性 如果设置了RegExp的全局模式'g',使用exec()或test()函数时,正则表达式的匹配就会从l 阅读全文
posted @ 2021-09-29 14:23
wmui
阅读(131)
评论(0)
推荐(0)
摘要:
FileAPI(文件API)为Web开发人员提供一种安全的方式,以便在客户端访问用户计算机中的文件,并更好地对这些文件执行操作 File API在表单中的文件输入字段的基础上,又添加了一些直接访问文件信息的接口。HTML5在DOM中为文件输入元素添加了一个files集合。在通过文件输入字段选择了一或 阅读全文
posted @ 2021-09-29 14:22
wmui
阅读(156)
评论(0)
推荐(0)
摘要:
Blob(binary large object)是计算机界通用术语之一,表示二进制大对象。在JavaScript中,Blob通常表示二进制数据,不过,它们不一定非得是大量数据,Blob也可以表示一个小型文本文件的内容。 构造函数 Blob()构造函数返回一个新的Blob对象,接收一个数组和配置项作 阅读全文
posted @ 2021-09-29 14:21
wmui
阅读(2972)
评论(0)
推荐(0)
摘要:
引入 cookie是一种早期的客户端存储机制,用于存储少量的文本数据。cookie数据可以自动在浏览器和服务器之间传输,因此服务器端脚本可以读写存储在客户端的cookie。任何以cookie形式存储的数据,不论服务器端是否需要,每一次HTTP请求都会把这些数据传输到服务器端。 概述 在JavaScr 阅读全文
posted @ 2021-09-29 14:20
wmui
阅读(1572)
评论(0)
推荐(0)
摘要:
JSONP是JSON with padding(填充式JSON或参数式JSON)的简写,常用于服务器与客户端跨域通信,由于其良好的兼容性,在Web服务中非常流行 基础 JSONP的基本思想是向网页中动态的添加一个``元素,并设置script元素的src属性为接口地址,利用script元素天生的跨域功 阅读全文
posted @ 2021-09-29 14:19
wmui
阅读(145)
评论(0)
推荐(0)
摘要:
引入 默认情况下,出于安全考虑,XHR对象只能访问与包含它的页面同一个域中的资源。但是,实现合理的跨域请求对开发某些浏览器应用程序也是至关重要的 CORS(Cross Origin Resource Sharing)跨源资源共享是W3C的一个工作草案,定义了在必须访问跨源资源时,浏览器与服务器应该如 阅读全文
posted @ 2021-09-29 14:18
wmui
阅读(412)
评论(0)
推荐(0)
摘要:
通常情况下,使用readystatechange事件监听HTTP请求的完成。XHR2规范草案定义了进度事件Progress Events事件,XHR对象在请求的不同阶段触发不同类型的事件,所以不再需要检测readyState属性,该规范定义了客户端与服务端通信的有关事件。这些事件最早其实只针对XHR 阅读全文
posted @ 2021-09-29 14:17
wmui
阅读(497)
评论(0)
推荐(0)
摘要:
开发中,经常会遇到文件上传、表单提交的情况,当HTML表单同时包含文件上传元素和其他元素时,Content Type的MIME类型必须是“multipart/form data”,并且用POST方法提交表单。XMLHttpRequest 2级定义了FormData类型,为序列化表单以及创建与表单格式 阅读全文
posted @ 2021-09-29 14:06
wmui
阅读(513)
评论(0)
推荐(0)
摘要:
比较常见的请求方式有GET和POST,下面对这两种方式做详细介绍 GET请求 GET请求常用于向服务器获取数据,发送请求时,参数被追加到URL的末尾。参数以问号开始,名和值之间用等号链接,名值对之间用和号(&)分隔。使用GET方式发送的数据常被称作查询字符串 编码 由于URL无法识别特殊字符,所以如 阅读全文
posted @ 2021-09-29 14:05
wmui
阅读(1657)
评论(0)
推荐(0)
摘要:
通过AJAX接收到的响应主体类型可以是多种形式的,包括字符串String、ArrayBuffer对象、二进制Blob对象、JSON对象、JavaScirpt文件及表示XML文档的Document对象等。下面将针对不同的主体类型,进行相应的响应解码 属性 responseText responseTe 阅读全文
posted @ 2021-09-29 14:05
wmui
阅读(564)
评论(0)
推荐(0)
摘要:
AJAX是Asynchronous JavasSript And XML的简写,这项技术能够在不卸载页面的情况下发出HTTP请求,虽然名字中包含XML,但AJAX通信与数据格式无关 AJAX通信通常包含4个步骤: 1. 创建XMLHttpRequest对象 2. 发送HTTP请求 3. 接收服务器返 阅读全文
posted @ 2021-09-29 14:04
wmui
阅读(480)
评论(0)
推荐(0)
摘要:
能力检测又称特性检测,它与前文介绍的用户代理检测不同,能力检测的目标不是识别特定的浏览器,而是识别浏览器的能力。能用能力检测得到解决的问题,不要使用用户代理检测 引入 能力检测的基本形式如下 下面针对不同浏览器的能力检测进行简单说明 IE检测 要检测当前IE浏览器是哪个版本,最简单的方式是使用doc 阅读全文
posted @ 2021-09-29 14:03
wmui
阅读(140)
评论(0)
推荐(0)
摘要:
screen对象用来表示客户端的能力,包括浏览器窗口外部显示器的信息,开发中并不常用 属性 每个浏览器中的screen对象都包含着各不相同的属性 常用属性 availHeight、availWidth availHeight:屏幕的像素高度减去系统部件高度之后的值(只读),代表屏幕可用高度,单位为像 阅读全文
posted @ 2021-09-29 14:02
wmui
阅读(174)
评论(0)
推荐(0)
摘要:
navigator对象常用于识别客户端浏览器 属性 每个浏览器中的navigator对象都有一套自己的属性 navigator对象有很多属性,最常用的只有userAgent属性,常用于实现用户代理检测。 用户代理检测 不同平台下浏览器的userAgent检测结果 【IE3】 Mozilla/2.0 阅读全文
posted @ 2021-09-29 14:02
wmui
阅读(215)
评论(0)
推荐(0)
摘要:
history对象保存了用户从打开窗口那一刻的上网历史记录。出于安全限制,开发人员无法读取用户的历史记录,但是可以通过history提供的方法,在不知道实际URL的情况下实现后退和前进 属性 history.length表示历史记录的URL数量,初始值是1,如果已经访问了3个网址,history.l 阅读全文
posted @ 2021-09-29 14:01
wmui
阅读(244)
评论(0)
推荐(0)
摘要:
location对象提供当前窗口所加载文档的相关信息,它既是window对象的属性,也是document对象的属性,它也可以单独使用 属性 location将URL解析成独立的片段,让开发人员可以通过不同的属性访问这些片段 URL: |属性名|例子|说明| | | | | |hash| one|哈希 阅读全文
posted @ 2021-09-29 14:00
wmui
阅读(93)
评论(0)
推荐(0)
摘要:
定义 window对象下的对话框有alert()、confirm()、prompt()和print()。这些系统对话框与浏览器中显示的网页是没有关系的,它们不是HTML,也不能通过CSS改变它们的样式,它们的外观由操作系统及浏览器设置决定。通过这几个方法打开的对话框是同步和模态的,因此这些对话框在显 阅读全文
posted @ 2021-09-29 13:59
wmui
阅读(72)
评论(0)
推荐(0)
摘要:
窗口即window对象,大多数浏览器都可以打开多个标签页,每个标签页都有自己的window对象 以下只介绍所有浏览器都支持的window对象的属性和方法 属性 outerWidth、outerHeight outerWidth和outerHeight属性用于表示浏览器窗口本身的尺寸 说明:Mac电脑 阅读全文
posted @ 2021-09-29 13:59
wmui
阅读(197)
评论(0)
推荐(0)
摘要:
HTML5新增了一个定时器requestAnimationFrame,旨在让动画操作更顺畅,更简单,更高效。requestAnimationFrame采用系统时间间隔,保持最佳绘制效率,不会因为间隔时间过短,造成过度绘制,增加开销;也不会因为间隔时间太长,使用动画卡顿不流畅,让各种网页动画效果能够有 阅读全文
posted @ 2021-09-29 13:58
wmui
阅读(251)
评论(0)
推荐(0)
摘要:
setTimeout() setTimeout()方法用来指定函数或字符串在指定的毫秒数之后运行。它返回一个整数,表示定时器的编号,这个值可以传递给clearTimeout()方法用于取消对setTimeout的引用 示例中,控制台先输出0,大概过1000ms后,输出定时器setTimeout()方 阅读全文
posted @ 2021-09-29 13:57
wmui
阅读(197)
评论(0)
推荐(0)
摘要:
在触发DOM上绑定的事件时,会产生一个事件对象event,这个对象中包含着与事件相关的信息,不同的事件包含的信息也有所不同。 获取事件对象 event对象是事件程序的第一个参数 属性 不同的事件类型,事件对象包含的信息也有所不同,但有一些属性和方法是共有的 type type表示被触发的事件类型 c 阅读全文
posted @ 2021-09-29 13:56
wmui
阅读(121)
评论(0)
推荐(0)
摘要:
事件是网页中某个特定的瞬间,通常由用户主动触发。但实际上也可以使用JavaScript触发特定的事件,这就是接下来要介绍的事件模拟 引入 假设现在有按钮一和按钮二两个按钮,按钮一绑定了特定监听函数,现在需要点击按钮二的时候也能触发按钮一的监听函数,可以这么做 btn2通过事件复制,拥有了同btn1一 阅读全文
posted @ 2021-09-29 13:56
wmui
阅读(384)
评论(0)
推荐(0)
摘要:
前面两篇文章介绍了offset偏移和client客户区,本篇scroll滚动是元素尺寸相关文章的最后一篇 滚动宽高 scrollHeight scrollHeight表示元素的总高度,包括由于溢出而无法展示在网页的不可见部分 scrollWidth scrollWidth表示元素的总宽度,包括由于溢 阅读全文
posted @ 2021-09-29 13:52
wmui
阅读(2513)
评论(0)
推荐(0)
摘要:
在HTML中引入CSS有三种方式:行内样式、内部样式、外部样式。内部样式和外部样式分别是通过<style>和<link>标签引入的,它们都属于CSSStyleSheet类型。前文介绍的行内样式属于CSSStyleDeclaration类型 CSSStyleSheet CSSStyleSheet是一个 阅读全文
posted @ 2021-09-29 13:51
wmui
阅读(154)
评论(0)
推荐(0)
摘要:
脚本化CSS,指的是使用JS操作CSS;脚本化行内样式,指的是用JS操作行内样式,行内样式也叫作内联样式 基础 元素节点提供style属性,用来操作CSS行内样式,style属性指向CSSStyleDeclaration对象 <div id="box" style="width: 30px;heig 阅读全文
posted @ 2021-09-29 13:45
wmui
阅读(245)
评论(0)
推荐(0)
摘要:
定义 DOM遍历模块定义了用于辅助完成顺序遍历DOM结构的类型:Nodeiterator和TreeWalker,它们能够基于给定的起点对DOM结构执行深度优先(depth-first)的遍历操作 示例HTML <!DOCTYPE html> <html> <head> <title>Example< 阅读全文
posted @ 2021-09-29 13:44
wmui
阅读(1705)
评论(0)
推荐(0)
摘要:
事件处理程序又叫事件侦听器,指的是事件绑定的函数。事件处理程序有HTML事件处理程序、DOM0级事件处理程序、DOM2级事件处理程序三类 HTML事件处理程序 某个元素支持的每种事件,都可以使用一个与之相应事件处理程序同名的HTML特性来指定 在事件处理程序函数内部,this值等于事件的目标元素 在 阅读全文
posted @ 2021-09-29 13:19
wmui
阅读(65)
评论(0)
推荐(0)
摘要:
JS与HTML的交互是通过事件实现的,事件是指文档或浏览器窗口中发生的一些特定的交互瞬间,事件流描述的是从网页中接受事件的顺序 为什么会有事件流?举个例子,页面上有个按钮,当点击按钮的时候不仅仅是触发了按钮的click,同时触发了文档的click,因为按钮是文档的一部分。事件流分为事件冒泡流和事件捕 阅读全文
posted @ 2021-09-29 13:18
wmui
阅读(113)
评论(0)
推荐(0)
摘要:
客户区大小client指的是元素内容及其内边距所占据的空间大小 客户区大小 和客户区大小相关的属性有四个:clientHeight、clientWidth、clientTop和clientLeft clientHeight clientHeight属性返回元素节点的客户区高度 clientWidth 阅读全文
posted @ 2021-09-29 13:17
wmui
阅读(140)
评论(0)
推荐(0)
摘要:
偏移量主要是指offsetLeft、offsetTop、offsetHeight、offsetWidth这四个属性。偏移参照的是定位父级offsetParent 定位父级 定位父级(offsetParent)值的是与当前元素最近的经过定位(position不等于static)的父级元素,主要分为下列 阅读全文
posted @ 2021-09-29 13:16
wmui
阅读(785)
评论(0)
推荐(0)
摘要:
动态样式是指页面加载过程中样式并不存在,页面加载完成后动态添加到页面的样式。动态样式包括通过``插入的外部样式表和通过` 阅读全文
posted @ 2021-09-29 13:15
wmui
阅读(211)
评论(0)
推荐(0)
摘要:
CSS全称是层叠样式表,元素的最终渲染结果是由多个CSS样式叠加后的结果,可以通过查询计算样式获得最终的叠加结果 getComputedStyle() 元素的计算样式(computedStyle)是用一个 CSSStyleDeclaration对象来表示的,计算样式是只读的,主要通过getCompu 阅读全文
posted @ 2021-09-29 13:14
wmui
阅读(160)
评论(0)
推荐(0)
摘要:
DOM节点操作方法包括创建节点、插入节点、删除节点、替换节点、查看节点(指的是查看节点间的关系)、复制节点。 创建节点 document.createElement(tagName)方法可以创建新的元素,该方法接受一个元素的标签名作为参数 所有节点都有一个ownerDocument属性,指向文档节点 阅读全文
posted @ 2021-09-29 13:13
wmui
阅读(425)
评论(0)
推荐(0)
摘要:
待写 参考文章:https://www.cnblogs.com/xiaohuochai/p/6387710.html 阅读全文
posted @ 2021-09-29 13:12
wmui
阅读(50)
评论(0)
推荐(0)
摘要:
innerHTML innerHTML属性是一个可读写属性。在读模式下,返回调用元素的所有子节点。在写模式下,会用指定的新值替换调用元素原先的所有子节点 在效率上,使用innerHTML要比使用appendChild()方法添加DOM的性能高 注意: 如果innerHTML属性用“+=”操作符重复追 阅读全文
posted @ 2021-09-29 13:11
wmui
阅读(84)
评论(0)
推荐(0)
摘要:
DOM可以把任何HTML描绘成一个由多层节点构成的结构,节点之间的关系构成了层次,所有的页面标记都可以看做一个以特定节点为根节点的树形结构,这种结构被称作DOM树 节点中的各种关系可以用传统的家族关系来描述,相当于把文档树比喻成家谱 属性 parentNode 每个节点都有一个parentNode属 阅读全文
posted @ 2021-09-29 13:09
wmui
阅读(148)
评论(0)
推荐(0)
摘要:
getElementById() 任何HTML元素都可以有一个id属性,在文档中该值必须唯一。如果出现了多个同名id,CSS会对所有同名id生效,但是JS脚本仅对第一个出现该id名的元素生效 getElementById(id)方法接收一个参数,表示要获取元素的id,若找到则返回该元素,若不存在则返 阅读全文
posted @ 2021-09-29 13:08
wmui
阅读(769)
评论(0)
推荐(1)
摘要:
在ES6之前,可选的集合类型非常有限,常见的如数组、对象、类数组对象。数组是数值型索引的数据结构,常被用于创建队列和栈。对象本质上是键值对的集合,但是传统上只能用字符串当作键,这给它的使用带来了很大的限制。如果开发者想要创建非数值型索引的数据结构,或者不想用字符串作为对象的键值,就要另谋他法。es6 阅读全文
posted @ 2021-09-29 13:07
wmui
阅读(78)
评论(0)
推荐(0)
摘要:
ES5中包含5种原始类型:字符串、数字、布尔值、null和undefined。ES6引入了第6种原始类型 —— Symbol类型 为什么要引入Symbol?ES5中对象的属性名都是字符串,这很容易造成命名冲突,最常见的就是扩展第三库的时候,要添加的新方法很可能和已有方法产生冲突。Symbol可以保证 阅读全文
posted @ 2021-09-29 13:06
wmui
阅读(85)
评论(0)
推荐(0)
摘要:
文本节点详解 文本节点由Text类型表示,包含的是纯文本内容,虽然是纯文本但却是对象类型 纯文本内容中的HTML字符会被转义 当代码换行后会存在空白文本节点 属性 data属性:文本节点的data属性与nodeValue属性相同 wholeText属性:wholeText属性把当前文本节点和毗邻的文 阅读全文
posted @ 2021-09-29 13:04
wmui
阅读(556)
评论(0)
推荐(0)
摘要:
动态集合是指DOM结构的变化能够自动反映到所保存的对象中,相应的静态集合是指DOM结构的变化不会自动反映到所保存的对象中 NodeList NodeList实例对象是一个类数组对象,它的成员是节点对象。childNodes和querySelectorAll()方法的返回值都是NodeList实例对象 阅读全文
posted @ 2021-09-29 13:04
wmui
阅读(274)
评论(0)
推荐(0)
摘要:
若无特殊说明,DOM篇的所有文章适用于IE9+等现代浏览器 概述 DOM是JavaScript操作网页的接口,全称为文档对象模型。它的作用是将网页转成一个JS对象,从而可以使用JS对网页进行各种操作 浏览器会根据DOM模型,将HTML文档解析成一系列的节点,再有这些节点组成一个树状结构。节点是DOM 阅读全文
posted @ 2021-09-29 13:03
wmui
阅读(311)
评论(0)
推荐(0)
摘要:
概述 async函数是Generator函数的语法糖,async函数就是将 Generator 函数的星号( )替换成async,将yield替换成await 使用Generator 函数,依次读取两个文件 使用Async 函数,依次读取两个文件 run()执行器在上一篇文章 "Promise和异步 阅读全文
posted @ 2021-09-29 13:02
wmui
阅读(181)
评论(0)
推荐(0)
摘要:
代理和反射 代理 代理(Proxy)是一种可以拦截并改变底层JS引擎操作的包装器,在新语言中通过它暴露内部运作的对象,从而让开发者可以创建内建的对象 通过new Proxy()可以创建目标对象的代理,它虚拟化了目标,所以两者看起来功能一致 代理可以拦截JS引擎内部目标的底层对象操作,这些底层操作被拦 阅读全文
posted @ 2021-09-29 13:02
wmui
阅读(239)
评论(0)
推荐(0)
摘要:
前言 JS引擎是基于单线程(Single threaded)事件循环的概念构建的,同一时刻只允许一个代码块在执行,所以需要跟踪即将运行的代码,那些代码被放在一个任务队列(job queue)中,每一段代码准备执行时,都会被添加到任务队列。每当JS引擎中的一段代码结束执行,事件循环(event too 阅读全文
posted @ 2021-09-29 13:01
wmui
阅读(154)
评论(0)
推荐(0)
摘要:
ES5中的“类” ES5中没有类的概念,要想实现和类相似的功能,通常是创建一个构造函数,然后把类方法赋值给构造函数的原型。许多模拟类的JS库都是基于这个模式进行开发。 类的声明 在ES6中可以用class关键字声明一个类,关键字后面紧跟着类的名字,其他部分语法类似对象字面量,但是各元素之间不需要逗号 阅读全文
posted @ 2021-09-29 13:00
wmui
阅读(85)
评论(0)
推荐(0)
摘要:
平常对数据进行迭代时使用较多的是循环语句,这就要求必须初始化一个变量,记录每一次迭代在数据集合中的位置。ES6的出现,让我们可以通过程序化的方式用迭代器对象返回迭代过程中集合中的每一个元素,从而极大简化数据操作。新的数组方法和新的集合类型(如Set集合、Map集合)都依赖迭代器实现,其他的如for/ 阅读全文
posted @ 2021-09-29 13:00
wmui
阅读(310)
评论(0)
推荐(0)
摘要:
修饰器(Decorator)是一个函数,用来修改类的行为。 示例中的 就是一个修饰器,修改了Person类的行为,为其添加了一个静态属性isTestable 修饰器对类的行为的改变,发生在代码编译阶段而非运行阶段。修饰器的本质其实就是编译时执行的函数 示例中修饰器的行为类似下面这样 参数 修饰器的第 阅读全文
posted @ 2021-09-29 12:59
wmui
阅读(145)
评论(0)
推荐(0)
摘要:
解构是一种打破原有数据结构,将其拆分为更小部分的过程 对象解构 在ES5中,开发者们为了从对象中获取特定数据并赋值给变量,通常是这样做 在ES6中,利用解构功能,可以这样做 类似于对象字面量语法的形式,只不过放到了赋值操作符的左边 可以使用解构功能为变量赋值,它会覆盖之前的变量值 注意: 一定要用一 阅读全文
posted @ 2021-09-29 12:58
wmui
阅读(117)
评论(0)
推荐(0)
摘要:
在ES6之前,应用程序中的每一个js文件都共享一个全局作用域,随着应用程序越来越复杂,这样会很容易造成命名冲突和安全问题。为了解决作用域的问题,使其显得更有序,ES6引入了模块。 概念 模块是自动运行在严格模式下并且没有办法退出运行的JS代码。在模块顶部创建的变量不会自动添加到全局作用域,它只存在于 阅读全文
posted @ 2021-09-29 12:58
wmui
阅读(79)
评论(0)
推荐(0)
摘要:
ES6之前,JS只有全局作用域和函数作用域,由于缺乏块级作用域,导致出现了很多怪异行为。ES6的新语法让开发者可以更好的控制作用域,本文详细介绍ES6新引入的块级作用域、let声明和const声明 let声明 let声明的用法与var声明相同。let声明可以把变量的作用域限制在当前代码块中,从而避免 阅读全文
posted @ 2021-09-29 12:57
wmui
阅读(61)
评论(0)
推荐(0)
摘要:
静态方法 ES6之前,创建数组的方式主要由两种:一种是调用Array构造函数,另一种是数组字面量。ES6新增了Array.of()和Array.from()两个方法也用于创建数组。 Array.of() ES6添加这些新方法,是为了帮助开发者规避通过Array构造函数创建数组是的怪异行为。 如果Ar 阅读全文
posted @ 2021-09-29 12:56
wmui
阅读(47)
评论(0)
推荐(0)
摘要:
形参默认值 JS中的函数,无论在函数定义时声明了多少形参,在函数调用时都可以传入任意数量的参数。 通常定义函数时会为可选的参数定义默认值,这样可以更方便的针对参数数量添加处理逻辑。 ES6为函数形参定义默认值很简单,直接在形参后面添加默认值即可 触发默认值 除了不传参数可以触发默认值外,当参数值是u 阅读全文
posted @ 2021-09-29 11:37
wmui
阅读(55)
评论(0)
推荐(0)
摘要:
对象类别 一直以来对象的术语描述没有统一的标准,于是ES6规范定义了每一个类别的对象,对象的类别如下: 1、普通(Ordinary)对象 具有JS对象所有的默认内部行为 2、特异(Exotic)对象 具有某些与默认行为不符的内部行为 3、标准(Standard)对象 ES6规范中定义的对象,例如,A 阅读全文
posted @ 2021-09-29 11:37
wmui
阅读(119)
评论(0)
推荐(0)
摘要:
正则表达式主要用于处理文本数据,即字符串。在ES6中,随着字符串操作的变更,正则表达式也进行了相应更新 构造函数 在ES5中,使用构造函数方式创建正则表达式的方式有两种 第一种情况是,参数一是一个字符串,这时第二个参数表示正则表达式的修饰符(flag) 第二种情况是,参数是一个正则表示式,这时不能设 阅读全文
posted @ 2021-09-29 11:36
wmui
阅读(57)
评论(0)
推荐(0)
摘要:
求幂运算符 在ES6之前通常使用Math.pow()方法执行求幂运算,ES6新引入了求幂运算符,用两个星号( )表示,左操作数是基数,右操作数是指数。 求幂运算符可以和等号结合,形成新的赋值运算符( =) 注意: 在v8引擎中,求幂运算符和Math.pow()的实现是不同的,对于特别大的运算结果会有 阅读全文
posted @ 2021-09-29 11:35
wmui
阅读(82)
评论(0)
推荐(0)
摘要:
JS中的字符串是一组由引号包裹的16位Unicode字符组成的字符序列。在Unicode引入扩展字符集之后,JS中的Unicode编码规则也进行了变更,本文介绍ES6中关于Unicode的相关扩展。 基本概念 Unicode的目标是为世界上每一个字符提供唯一标识符。唯一标识符(code point) 阅读全文
posted @ 2021-09-29 11:35
wmui
阅读(224)
评论(0)
推荐(0)
摘要:
JS的字符串的功能一直以来都特别有限,缺乏很多特性,比如不能直接表示多行字符串、字符串格式化、HTML转义等等。ES6通过模板字面量方式进行了填补,它通过全新的方法解决了这些问题。 基础用法 模板字面量使用反引号``标识。 js let s = console.log(s) // 'hello wo 阅读全文
posted @ 2021-09-29 11:34
wmui
阅读(87)
评论(0)
推荐(0)
摘要:
常量 Math对象有8个常量,主要包括对数、派值和平方根 对数 关于数值e,可以参考知乎 "这篇文章" 派值 平方根 函数 Math对象有18个静态函数,主要包含最值、舍入、随机数、三角函数、乘方和开方。这些函数都涉及到Number()隐式类型转换,若超出范围,将返回NaN。 最值 Math.min 阅读全文
posted @ 2021-09-29 11:33
wmui
阅读(220)
评论(0)
推荐(0)
摘要:
本文详细介绍ES6对字符串的扩展 字符串识别 在ES6之前,常使用indexOf()方法判断一个字符串中是否包含另一个字符串。ES6新增加了3个方法让开发者更方便的识别字符串。 【includes(str, index)】字符串包含给定文本时返回true,否则返回false。str表示要查找的文本, 阅读全文
posted @ 2021-09-29 11:33
wmui
阅读(68)
评论(0)
推荐(0)
摘要:
JSON(JavaScript Object Notation)全称JavaScript对象表示法,是一种数据交换的文本格式,用于读取结构化数据。 语法规则 JSON的语法可以表示三种类型值:简单值、对象、数组。 简单值 JSON中的简单值可以是字符串、数值、布尔值、null。 字符串必须使用双引号 阅读全文
posted @ 2021-09-29 11:32
wmui
阅读(343)
评论(0)
推荐(0)
摘要:
上一篇介绍了 "创建对象的5种模式" ,本篇介绍对象实现继承的3种形式。继承简单说就是在原有对象基础上稍作改动,得到一个新的对象,这个新对象可以拥有原对象的属性和方法。JS实现继承的3种方式:类式继承、class继承和拷贝继承。 JS这门语言和其他面向对象的语言不同,它并不支持类和类继承特性,只能通 阅读全文
posted @ 2021-09-29 11:31
wmui
阅读(204)
评论(0)
推荐(0)
摘要:
面向对象是一种描述代码组织架构的形式,一种在软件领域对真实世界中问题的建模方法。本文主要介绍面向对象程序设计(OOP)中的一些常见名词和概念 对象 何为对象?简单说就是事物或人物在程序设计语言中的变现形式。例如“人”可以被看做是一个对象,每个人都有名字、性别和年龄这些特征,在OOP中这些特征称为属性 阅读全文
posted @ 2021-09-29 11:31
wmui
阅读(81)
评论(0)
推荐(0)
摘要:
在 "JS对象类型 对象 认识对象" 一文中,介绍了创建对象的3种方式:new构造函数、对象字面量和Object.create()函数。下面基于这3种方式介绍下创建对象的5种常用模式。 对象字面量 对象字面量方式虽然可以创建单个对象,但是如果同时创建多个类似对象,会产生大量冗余代码。 工厂模式 为了 阅读全文
posted @ 2021-09-29 11:30
wmui
阅读(104)
评论(0)
推荐(0)
摘要:
JS中最复杂的莫过于prototype、proto和constructor之间的三角关系,搞清楚它们之间的关系对理解JS这门语言很重要,下面是我画的一张关系图,本文以该图为例解释它们之间的关系。 基本概念 【构造函数】用来初始化实例对象的函数是构造函数。图中浅绿色的People()、Object() 阅读全文
posted @ 2021-09-29 11:29
wmui
阅读(206)
评论(0)
推荐(0)
摘要:
this机制是js中很重要的知识点,它和作用域查询是两个容易混淆的知识点。本文将详细介绍this的4种绑定规则。 默认绑定 1. 全局环境中,this指向window。 2. 独立函数调用时,this指向window。严格模式下指向undefined。 3. 作为对象的方法调用时,this指向原对象 阅读全文
posted @ 2021-09-29 11:20
wmui
阅读(87)
评论(0)
推荐(0)
摘要:
定义 闭包是指函数声明时所处作用域外被调用的函数。所以闭包也是函数,只不过要满足3个条件才叫闭包: 1. 访问函数所处作用域。 2. 函数嵌套。因为只有函数嵌套才能创建不同的作用域。 3. 函数所处作用域外被调用。 示例中在全局作用域中被调用的foo2函数就是一个闭包。foo2声明时所处的作用域就是 阅读全文
posted @ 2021-09-29 11:19
wmui
阅读(74)
评论(0)
推荐(0)
摘要:
声明提升(hoisting)分为变量声明提升和函数声明提升。声明从它们在代码中出现的位置被“移动”到最上面的过程,被称作声明提升。每个作用域都会有声明提升。 在介绍作用域的内部原理时有提过,引擎在解释JS代码前首先进行编译,编译过程中会找到所有的声明,并用合适的作用域将它们关联起来。 以 说明,这行 阅读全文
posted @ 2021-09-29 11:13
wmui
阅读(61)
评论(0)
推荐(0)
摘要:
在ES6之前,JS中的作用域只有全局作用域和函数作用域。ES6引入了块作用域,使得开发和维护都变得更简单,在这里对ES6的块作用域进行简单介绍。 let js // 示例1 for (var i= 0; i 阅读全文
posted @ 2021-09-29 11:13
wmui
阅读(67)
评论(0)
推荐(0)
摘要:
词法作用域 在介绍作用域的第一篇文章中说到编译器的第一个阶段是分词,词法作用域就是定义分词阶段的作用域,是由代码中变量作用域和块作用域的位置决定的,所以词法分析器在处理代码时会保持作用域不变。 词法作用域只由函数被声明时所处的位置决定。 上面的例子中有三个逐级嵌套的作用域: 1. 第一级就是最外层的 阅读全文
posted @ 2021-09-29 11:12
wmui
阅读(114)
评论(0)
推荐(0)
摘要:
浅拷贝和深拷贝是针对数组和对象而言的。对象的浅拷贝只复制了一层对象的属性,对于Array和Object这些引用类型值拷贝的是一个在内存中的地址。而深拷贝会把对象的属性通过递归的方式逐个复制,包括引用类型值。 浅拷贝 深拷贝 【方法1】 【方法2】 使用JSON全局对象的parse和stringify 阅读全文
posted @ 2021-09-29 11:11
wmui
阅读(109)
评论(0)
推荐(0)
摘要:
JavaScript有一套良好的规则用来存储变量,方便变量的查找,这套规则被称作作用域。 作用域的内部原理分为编译、执行、查询、嵌套和异常5个部分,下面对这5部分进行详细介绍。 编译 编译过程有3步:分词、解析和代码生成。下面以 为例进行这3个过程的说明。 分词(tokenizing) 把字符串分解 阅读全文
posted @ 2021-09-29 11:11
wmui
阅读(82)
评论(0)
推荐(0)
摘要:
属性描述符用于描述对象的值是否可配置、是否可修改、是否可枚举。 描述符类型 对象的属性描述符的类型分为两种:数据属性和访问器属性。 数据属性 数据属性包含一个数据值的位置,该位置可读取和写入值。数据属性有4个特性。 【configurable】configurable表示可配置性,它决定了是否可以用 阅读全文
posted @ 2021-09-29 11:10
wmui
阅读(368)
评论(0)
推荐(0)
摘要:
定义 JavaScript的数据类型包含Undifined、Null、Boolean、Number、String和Object。对象和其他5种数据类型是不同的,其他5种是简单值,对象是一种复合值,可以把许多值聚合在一起,并通过名字访问这些值。 对象是属性的无序集合,每个属性都是一个名值对。属性名是字 阅读全文
posted @ 2021-09-29 11:09
wmui
阅读(459)
评论(0)
推荐(0)
摘要:
对象的属性操作包括属性查询、属性设置、属性删除和属性继承。 属性查询 属性查询有两种方式:点运算符和方括号运算符。 【点运算符】使用点运算符访问对象属性时,属性名用一个标识符来表示,属性名必须符合变量命名规则,否则会报错。 【方括号运算符】使用方括号运算符访问对象属性时,属性名用一个字符串表示。方括 阅读全文
posted @ 2021-09-29 11:09
wmui
阅读(467)
评论(0)
推荐(0)
摘要:
惰性函数和普通函数的区别是它的执行分支只在函数调用时执行一次,调用过程中函数会被另一种合适的执行方式覆盖,所以后面再调用这个函数时,就不会再执行分支语句。 使用场景 为了兼容各大浏览器,经常会在函数内部写大量if语句来检侧浏览器特性。比如为dom节点添加事件函数。 上面的函数会在每次执行点击事件时, 阅读全文
posted @ 2021-09-29 11:08
wmui
阅读(71)
评论(0)
推荐(0)
摘要:
函数柯里化currying的概念最早由俄国数学家Moses Schönfinkel发明,而后由著名的数理逻辑学家Haskell Curry将其丰富和发展,currying由此得名。 定义 currying又称部分求值。柯里化函数首先会接受一些参数,参数接收之后不会立即求值,而是继续返回一个新的函数, 阅读全文
posted @ 2021-09-29 11:07
wmui
阅读(70)
评论(0)
推荐(0)
摘要:
函数防抖 函数防抖就是短时间内频繁触发的事件或函数,指定时间间隔内频繁触发会被忽略掉。 比较常见的如搜索联想功能,如果打字很快,这期间不需要调用后台接口。 函数节流 函数节流是使短时间内连续执行的事件或函数,变为固定时间间隔执行。 比较常见的比如疯狂点击轮播图的按钮时,轮播图依旧按照指定的轮播时间执 阅读全文
posted @ 2021-09-29 11:07
wmui
阅读(38)
评论(0)
推荐(0)
摘要:
定义 高阶函数指操作函数的函数。高阶函数需要满足两个条件:函数可以作为参数被传递;函数可以作为返回值输出。 参数传递 日常开发中,把函数作为参数传递是很常见的情况,通常为了分离出容易变化的业务逻辑,会这部分逻辑放到一个函数参数里。 【回调函数】一个常见的场景,在使用ajax请求数据时,通常把一个回调 阅读全文
posted @ 2021-09-29 11:06
wmui
阅读(88)
评论(0)
推荐(0)
摘要:
JS中函数定义时不需要指定参数的类型,函数调用时也不会对传入的参数进行类型检查,甚至参数的个数也不做检查,了解这些特殊情况,避免开发出错。 参数个数 当实参比形参的个数少时,多余的形参会被设置成undefined。 当实参比形参的个数多时,多余的实参在函数中无法直接获取到,可以通过arguments 阅读全文
posted @ 2021-09-29 11:05
wmui
阅读(1024)
评论(0)
推荐(0)
摘要:
JS中的函数也是对象,可以像普通的对象一样拥有属性和方法。函数的强大之处在于可以使用Function()构造函数创建新的函数对象。 属性 length属性 函数的length属性表示形参的个数。函数内部有一个arguments对象,arguments对象的length属性表示实参的个数。 name属 阅读全文
posted @ 2021-09-29 11:05
wmui
阅读(686)
评论(0)
推荐(0)
摘要:
定义函数 定义函数的方式有三种:函数声明语句、函数表达式和Function构造函数 函数声明语句 functionName指要声明函数的名称(标识符),圆括号中是参数列表,参数之间用逗号分隔。当调用函数时,这些形参(参数列表)会被替换成实参(传入的参数)。 【声明提升】:函数声明语句定义的函数有个特 阅读全文
posted @ 2021-09-29 11:04
wmui
阅读(453)
评论(0)
推荐(0)
摘要:
Date类型使用自UTC1970年1月1日0点开始经过的毫秒数来保存日期,它可以表示的时间范围是1970年1月1日0点前后的各1亿天。 基础知识 标准时间 标准时间是指GMT(格林尼治标准时间)和UTC(世界协调时间)。GMT是指位于伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过 阅读全文
posted @ 2021-09-29 11:01
wmui
阅读(411)
评论(0)
推荐(0)
摘要:
error对象是JavaScript的原生对象,当程序解析和运行过程中发生了错误,JS引擎就会自动产生并抛出一个error对象的实例,并且程序会终止在错误发生的地方。 ECMA 262规定error对象包含message和name两个属性,message属性保存错误信息,name属性保存错误类型。 阅读全文
posted @ 2021-09-29 11:00
wmui
阅读(1362)
评论(0)
推荐(0)
摘要:
创建数组 创建数组最简单的方法是使用字面量方式,在方括号中用逗号分割数组元素。 如果数组的元素还是数组,就形成了多维数组 另外一种是使用构造函数方式。 稀疏数组 稀疏数组就是包含从0开始的不连续索引的数组。 可以使用delete操作符制造稀疏数组。 可以通过省略逗号间的元素值制作稀疏数组 数组长度 阅读全文
posted @ 2021-09-29 10:59
wmui
阅读(309)
评论(0)
推荐(0)
摘要:
继承方法 继承自对象的方法有三种:toString()、toLocaleString()和valueOf() toString() toString()方法返回数组中元素以逗号分隔的字符串。同不传参的join()方法表现效果一样。 toLocaleString() toLocaleString()方 阅读全文
posted @ 2021-09-29 10:59
wmui
阅读(349)
评论(0)
推荐(0)
摘要:
前言 JS中undefined和null均被用来表示无,它们都是原始数据类型,而且只有细微的差别: 用来表示一个“无”的对象,转为数值时结果为0; 用来表示一个“无”的原始值,转为数值时结果为NaN。 undefined Undefined类型只有一个值,就是undefined。 以下情况均返回un 阅读全文
posted @ 2021-09-29 10:58
wmui
阅读(149)
评论(0)
推荐(0)
摘要:
定义 JavaScript采用IEEE 754格式来表示数字,所以不区分整数和浮点数,JS中的数字都是用浮点数表示的。由于浮点型数值占据的内存空间是整数型的两倍,所以JS会不失时机的把浮点数值转换成整数,比如说本身就是一个整数或者小数点后面没有任何有效数值,这个数值就会被当做整数来保存 整数 JS有 阅读全文
posted @ 2021-09-29 10:57
wmui
阅读(582)
评论(0)
推荐(0)
摘要:
定义 布尔类型表示逻辑实体,只有 和`false`两个值,表示真假两个状态。 转为布尔 可以使用Boolean()转型函数将一个值转为布尔值。 这七个转换成布尔值是假值,其他的都是真值。 注意: 空字符的布尔值是false, 空字符之间有空格结果就是true。 所有对象的转换结果都是true, 实例 阅读全文
posted @ 2021-09-29 10:57
wmui
阅读(436)
评论(0)
推荐(0)
摘要:
定义 字符串是由引号包裹的一组由16位Unicode字符组成的字符序列 字符串类型常用于表示文本数据,每个元素被视为一个代码点,代码点占据字符序列中的一个位置,首字符从位置0开始,第二个字符位置是1,以此类推。字符串的长度等于元素的个数。 Unicode JS采用UTF-16编码的Unicode字符 阅读全文
posted @ 2021-09-29 10:56
wmui
阅读(280)
评论(0)
推荐(0)
摘要:
定义 JavaScript采用IEEE 754格式来表示数字,所以不区分整数和浮点数,JS中的数字都是用浮点数表示的。由于浮点型数值占据的内存空间是整数型的两倍,所以JS会不失时机的把浮点数值转换成整数,比如说本身就是一个整数或者小数点后面没有任何有效数值,这个数值就会被当做整数来保存 整数 JS有 阅读全文
posted @ 2021-09-29 09:49
wmui
阅读(684)
评论(0)
推荐(0)
摘要:
JS类型系统 JS的类型系统包括原生对象、宿主对象和浏览器扩展对象 原生对象 原生对象分为原始类型和对象类型,原始类型分为空值和包装对象,对象类型分为构造器对象和单体内置对象 原始类型 空值:JS有两个空值,分别是undefined和null,逻辑上,undefined表示原始类型的空值,null表 阅读全文
posted @ 2021-09-29 09:48
wmui
阅读(177)
评论(0)
推荐(0)
摘要:
循环语句 JS有四种循环语句, ,循环的原理很简单,当条件得到满足时,循环语句中的代码重复执行,当条件不满足时结束循环。 while语句 while语句是前测试语句,在执行循环之前先对出口条件进行求值 js var count = 0; while(count 阅读全文
posted @ 2021-09-29 09:47
wmui
阅读(269)
评论(0)
推荐(0)
摘要:
逻辑运算符对操作数进行布尔运算,经常和关系运算符配合使用,逻辑运算符分为逻辑非 、逻辑与 和逻辑或 ,可以应用于任何数据类型 逻辑非 逻辑非用 表示,它会先把操作数转为布尔值,然后再取反。如果同时使用两个逻辑非操作符,则相当于使用 转型函数。 逻辑与 逻辑与用两个和号 表示,要两个操作数,当操作数都 阅读全文
posted @ 2021-09-29 09:46
wmui
阅读(256)
评论(0)
推荐(0)
摘要:
赋值运算符 赋值操作符用 符号表示,把等号右边的值赋值给左边的变量或属性 赋值运算符的优先级很低,所以在复杂的赋值操作中需要用圆括号来保证赋值顺序。 如果表达式中出现了多个赋值运算符,赋值顺序是从右到左 JS提供了11个复合赋值运算符,可以简化赋值操作 圆括号运算符 圆括号运算符也叫分组运算符,有两 阅读全文
posted @ 2021-09-29 09:46
wmui
阅读(252)
评论(0)
推荐(0)
摘要:
算术运算符主要用于算数操作,算术运算符包括一元算术运算符和二元算术运算符 一元算术运算符 在JS中一元算术运算符包括一元加法 ,一元减法 ,递增 ,递减 一元加 一元加法运算符使用符号 表示,放在数值前面,对数值不会产生任何影响 如果为非数值应用一元加法运算,会自动代用 转型函数 使用一元加运算,可 阅读全文
posted @ 2021-09-29 09:45
wmui
阅读(311)
评论(0)
推荐(0)
摘要:
关系运算符用于比较两个值之间的关系,关系成立则返回true,不成立则返回false, JS提供了`===, !==, ==, !=, , =, 'a'; // true 'B' 'a'; // false '2' '11'; // true 2的Unicode值大于1的Unicode值 ['b'] 阅读全文
posted @ 2021-09-29 09:45
wmui
阅读(205)
评论(0)
推荐(0)
摘要:
启用JavaScript严格模式编程可以避免代码在执行过程中出现意想不到的结果,JavaScript是一种向后兼容的语言,所以为了消除JS中一些不严谨不安全的语法,减少怪异行为的出现,在严格模式下编程是很有必要的。 启用严格模式的方法很简单,只需要在脚本顶部添加 即可,也可以只在函数中使用,只需在函 阅读全文
posted @ 2021-09-29 09:44
wmui
阅读(92)
评论(0)
推荐(0)

浙公网安备 33010602011771号