简介
JavaScript是一种轻量级的脚本语言。所谓“脚本语言”,指的是它不具备开发操作系统的能力,而且只用来编写控制其他大型应用程序的“脚本”
JavaScript是一种嵌入式(embedded)语言。它本身提供的核心语法不算很多
语句、标识符
![](https://img.haomeiwen.com/i20123021/f0fd60fe0042b996.png)
变量
![](https://img.haomeiwen.com/i20123021/6004cf092be11e63.png)
即下面两种的log效果是一样的
![](https://img.haomeiwen.com/i20123021/8af26d1b46fed276.png)
常见输出方式
![](https://img.haomeiwen.com/i20123021/a4c52101e7ad8bfd.png)
对象类型
![](https://img.haomeiwen.com/i20123021/e5b66976e702a46c.png)
运算符
- typeof:判断基本数据类型使用,对象的话返回object
![](https://img.haomeiwen.com/i20123021/b80237577f27daf6.png)
-
===(强等)
image.png
- 非布尔值取反
![](https://img.haomeiwen.com/i20123021/450b3eb6732b4b1f.png)
字符串
![](https://img.haomeiwen.com/i20123021/1bb39727a465a95c.png)
![](https://img.haomeiwen.com/i20123021/83fc6144f33b4377.png)
- concat:连接两个字符串,返回一个新的字符串,不改变原字符串。
![](https://img.haomeiwen.com/i20123021/8436b70dc28e8491.png)
![](https://img.haomeiwen.com/i20123021/cc557115beb3f334.png)
直接做字符串相加是不需要使用concat的,可以直接只用+连接字符串
注意:如果是数字类型,+号则就是直接运算
- substring:
1、 从原字符串中取出字符串并返回,不改变原字符串。第一个位置为开始位,第二个位置为结束位(截取的字符串并不包含该位,即左闭右开)
2、 如果省略第二个参数,则表示子字符串一直到原字符串的结束
3、 如果第一个参数大于第二个参数,substring方法会自动交换两者的位置
4、 如果是负数,substring方法会自动将负数转为0
![](https://img.haomeiwen.com/i20123021/2f01fb963b1101d2.png)
- substr:
1、 与substring方法类似,不同的是substr方法的第二个参数为截取的长度
2、 如果第一个参数是负数,表示倒数计算的字符位置。如果第二个参数为负数,将自动转为0,因此会返回空字符串。
![](https://img.haomeiwen.com/i20123021/e6bccdd84916b1d4.png)
![](https://img.haomeiwen.com/i20123021/beaa927e7eaddf29.png)
-
indexOf:
1、 用于确定一个字符串在另一个字符串中第一次出现的位置,返回结果是匹配开始的位置。如果返回值是-1,就表示不匹配
2、 还接受第二个参数,表示从这个位置开始查找。 -
trim:
3、
1、 用于去除字符串两端的空格,返回一个新的字符串,不改变原字符串
2、 该方法去除的不仅仅是空格,还包括制表符(\t、\v)、换行符(\n)和回车符(\r)
image.png
-
split:
1、 按照给定规则分割字符串,返回一个由分割出来的子字符串组成的数组
2、 如果分割规则为空字符串,则返回数组的成员是原字符串的每一个字符
3、 如果省略参数,则返回数组的唯一成员就是原字符串
4、 还可以接受第二个参数,限定返回数组的最大成员数
![](https://img.haomeiwen.com/i20123021/50d8eccfcb24ec92.png)
![](https://img.haomeiwen.com/i20123021/9b3b8cb0304c55c6.png)
数组
![](https://img.haomeiwen.com/i20123021/ed5e48e2b1a49ae6.png)
![](https://img.haomeiwen.com/i20123021/a3e8fa05b31d3e6b.png)
- 数组的静态方法Array.isArray()
返回一个布尔值,表示参数是否为数组。 - push与pop
在数组的末端添加或删除元素,都会改变原数组。
![](https://img.haomeiwen.com/i20123021/fffbaefc7f0b72f7.png)
- shift/unshift
1、 shift用于删除数组的第一个元素,并返回该元素。
2、 unshift用于在数组的第一个位置添加元素,并返回添加新元素后的数组长度。
利用shift方法可以清空一个数组,前面提到过几种特殊布尔值,其余都是true。
![](https://img.haomeiwen.com/i20123021/7455923ef260f67c.png)
注意:当unshift同时添加多个元素时,就直接按顺序插入,不再依次插入头部。
- join
join方法以指定参数作为分隔符,将所有数组成员连接为一个字符串并返回。如果不提供参数,默认以逗号分隔。
![](https://img.haomeiwen.com/i20123021/07aec60fd7175c77.png)
数组的join配合字符串的split可以实现数组与字符串的互换
![](https://img.haomeiwen.com/i20123021/bf90e1e71cf218ca.png)
- concat
用于多个数组合并。它将新数组的成员添加到原数组成员的后部,然后返回一个新数组,原数组不变。
![](https://img.haomeiwen.com/i20123021/4e007cef17d5b2cf.png)
应用场景:上拉加载,合并数据。
- reverse
颠倒排列数组元素,返回改变后的数据。该方法会改变原数组。
![](https://img.haomeiwen.com/i20123021/414da87e6e877d20.png)
![](https://img.haomeiwen.com/i20123021/2fb92dd5644c08fc.png)
- indexOf
返回给定元素在数组中第一次出现的位置,如果没有出现就返回-1。同时,与字符串中的indexOf一样,接受第二个参数作为开始搜索的位置。
函数
函数的声明
![](https://img.haomeiwen.com/i20123021/c2a8f72faea52bae.png)
![](https://img.haomeiwen.com/i20123021/74f7fda874c3db83.png)
1、 对象的“键值”可以是任何数据类型,如果一个属性的值为函数,通常把这个属性称为“方法”,它可以向函数那样调用。
2、 如果属性的值还是一个对象,就形成了链式引用。
![](https://img.haomeiwen.com/i20123021/9622a96b6f22a4d5.png)
Math对象
- Math.abs():返回参数的绝对值
- Math.max()、Math.min()
- Math.floor()、Math.ceil()
![](https://img.haomeiwen.com/i20123021/68bd90b43d27403a.png)
- Math.random():取[0,1)随机数
![](https://img.haomeiwen.com/i20123021/2af75327f3a1fc17.png)
Date对象
- Date.now():返回当前距离时间零点(1970年1月1日 00:00:00 UTC)的毫秒数,相当于Unix时间戳乘以1000
![](https://img.haomeiwen.com/i20123021/93ba8c11596140fe.png)
![](https://img.haomeiwen.com/i20123021/bf7ae3fb6c277128.png)
![](https://img.haomeiwen.com/i20123021/a1679566871e5987.png)
![](https://img.haomeiwen.com/i20123021/a4bdbd54cde5cb21.png)
DOM
只需记住一点:JS通过DOM操作网页
![](https://img.haomeiwen.com/i20123021/b5e251c95b60550e.png)
DOM时JavaSript操作网页的接口,全程为“文档对象模型”(Document Object Model)。它的作用是将网页转为一个JavaScript对象,从而可以用脚本进行各种操作(比如对元素曾删内容)
浏览器会根据DOM模型,将结构化文档HTML解析成一系列的节点,再由这些节点组成一个树状结构(DOM Tree)。所有的节点和最终的树状结构,都有规范的对外接口。
DOM只是一个规范接口,可以用各种语言实现。所以严格地说,DOM不是JavaScript语法的一部分,但是DOM操作是JavaScript最常见的任务,离开了DOM,JavaScript就无法控制网页。另一方面,JavaScript也是最常用于DOM操作的语言。
节点
DOM的最小组成单位叫节点(node)。文档的树形结构(DOM树),就是由各种不同类的节点组成。每个节点可以看成文档树的一片叶子
![](https://img.haomeiwen.com/i20123021/501f306012ebd98d.png)
![](https://img.haomeiwen.com/i20123021/be1dd44266d3e676.png)
常用Document、Element
节点树
一个文档的所有节点,按照所在的层级,可以抽象成一种树状结构。这种树状结构就是DOM树。他有一个顶层节点,下一层都是顶层节点的子节点,然后子节点又有自己的子节点,就这样层层衍生出一个金字塔结构,倒过来就像一棵树
![](https://img.haomeiwen.com/i20123021/985e183de1ac8c90.png)
Node.nodeType属性
![](https://img.haomeiwen.com/i20123021/37e14a38f449dbbe.png)
![](https://img.haomeiwen.com/i20123021/e9d1e52ef2754ff5.png)
document对象方法获取元素
- document.getElementsByTagName()
![](https://img.haomeiwen.com/i20123021/0fe577e603d887e0.png)
![](https://img.haomeiwen.com/i20123021/dc6bc114c06ddb99.png)
- document.getElementsByClassName()
![](https://img.haomeiwen.com/i20123021/45e2b1b8295e330a.png)
- document.getElementsByName()
![](https://img.haomeiwen.com/i20123021/d41a008fefede233.png)
- document.getELementsById():Id是唯一的,所以不用像上面一样通过数组下标操作。
![](https://img.haomeiwen.com/i20123021/7e15de98e910d841.png)
以下两个是H5之后增加的
- document.querySelector
![](https://img.haomeiwen.com/i20123021/1d3988387258bd4b.png)
- document.querySelectorAll()
![](https://img.haomeiwen.com/i20123021/390073c966af2a7f.png)
document对象方法/创建元素
- document.createElement()
- document.createTextNode()
- document.createAttribute()
![](https://img.haomeiwen.com/i20123021/2188af6f06d909f8.png)
- appendChild:将内容或者子元素放到容器中
- setAttributeNode:为元素设置属性
Element对象属性
Element对象对应网络的HTML元素。每一个HTML元素,在DOM树上都会转化成一个Element节点对象(一下简称元素节点)。以下这些属性不仅能get,也能set。
- id
![](https://img.haomeiwen.com/i20123021/5f1b7a3d2f195c77.png)
- className
![](https://img.haomeiwen.com/i20123021/4c96b5efb50bd1ff.png)
- classList
![](https://img.haomeiwen.com/i20123021/7482ba8e2d45d09a.png)
![](https://img.haomeiwen.com/i20123021/49c0bdba86dd4b58.png)
toggle:如果不存在就加入,否则就移除。
- innerHTML
![](https://img.haomeiwen.com/i20123021/6ff9449789d19c7e.png)
innerHTML和innerText的区别:
innerHTML可以识别标签,innnerText会把标签识别成一个字符串,详情如下:
![](https://img.haomeiwen.com/i20123021/3ca31250bf8aac1f.png)
![](https://img.haomeiwen.com/i20123021/4e5bd40fd450d737.png)
![](https://img.haomeiwen.com/i20123021/0a5e5b1a46e23a70.png)
![](https://img.haomeiwen.com/i20123021/fbdae3521c681f0e.png)
Element获取元素位置
![](https://img.haomeiwen.com/i20123021/528c9de0a730897b.png)
![](https://img.haomeiwen.com/i20123021/ef1face192cc6f11.png)
页面的高度指的是内部元素所撑开的大小
CSS操作
(3种方案)
- HTML元素的style属性
![](https://img.haomeiwen.com/i20123021/f594b48a79c4cfa6.png)
- 元素节点的style属性
![](https://img.haomeiwen.com/i20123021/6a7fb536e5bfe938.png)
- cssText属性
![](https://img.haomeiwen.com/i20123021/e899f3a9f8ae2bb1.png)
![](https://img.haomeiwen.com/i20123021/a93c1c736411090b.png)
事件处理程序
- HTML事件处理
![](https://img.haomeiwen.com/i20123021/2993c0bdd9e1c47c.png)
缺点:HTML的代码没有和JS分开
- DOM0级事件处理
![](https://img.haomeiwen.com/i20123021/421f6a23ffcb2164.png)
缺点:无法同时触发多个事件
- DOM2级事件处理
![](https://img.haomeiwen.com/i20123021/a7e0d3a3bd47630f.png)
事件类型之鼠标事件
- click:按下鼠标时触发
- dbclick:在同一个元素上双击鼠标时触发
- mousedown:按下鼠标键时触发
- mouseup:释放按下的鼠标键时触发
- mousemove:当鼠标在节点内部移动时触发。当鼠标持续移动时,该事件会连续触发。
- mouseenter:鼠标进入一个节点时触发,进入子节点不会触发这个事件
- mouseleave:鼠标离开一个节点时触发,离开父节点不会触发这个事件
- mouseover:鼠标进入一个节点时触发,进入子节点会再一次触发这个事件
- mouseout:鼠标离开一个节点时触发,离开父节点也会触发这个事件
- wheel:滚动鼠标的滚轮时触发
![](https://img.haomeiwen.com/i20123021/170b8492f8ef4f64.png)
Event事件对象
事件发生以后,会产生一个事件对象,作为参数传给监听函数。
Event对象属性
- Event.target
![](https://img.haomeiwen.com/i20123021/389f90b88df6c5f4.png)
![](https://img.haomeiwen.com/i20123021/8c386dab538c5cf8.png)
- Event.type
![](https://img.haomeiwen.com/i20123021/873423a88fcba9ff.png)
Event对象方法
- Event.preventDefault()
![](https://img.haomeiwen.com/i20123021/bb648c95f610ee32.png)
- Event.stopPropagation()
![](https://img.haomeiwen.com/i20123021/2a47e20eef8450b4.png)
也就是当大容器包含小容器,点击小容器时大容器也响应到了点击,该方法就是阻止这种传播。
![](https://img.haomeiwen.com/i20123021/418f24c96f8105f4.png)
事件类型之键盘事件
![](https://img.haomeiwen.com/i20123021/fd3c0e94254c639c.png)
- keyCode:唯一标识,其中回车按键最常用,比如搜索。
![](https://img.haomeiwen.com/i20123021/fe0a4645fe2fa5db.png)
事件类型之表单事件
![](https://img.haomeiwen.com/i20123021/5f8910b77c931c63.png)
- input事件
![](https://img.haomeiwen.com/i20123021/0af8712b76cf8785.png)
- select事件
![](https://img.haomeiwen.com/i20123021/c0cd5d8c06f61993.png)
- change事件
![](https://img.haomeiwen.com/i20123021/e18b5505833eef25.png)
回车和输入框失去焦点时都会触发
- reset和submit事件:其实就是表单方法
![](https://img.haomeiwen.com/i20123021/36c459344e3d9c84.png)
![](https://img.haomeiwen.com/i20123021/3f2bff05f75fcaf0.png)
![](https://img.haomeiwen.com/i20123021/154b660cce759c86.png)
网友评论