ES5+ES6
2022-03-04 22:00:14 0 举报
JS基础
作者其他创作
大纲/内容
<font color="#ffffff" style=""><b>ES5</b>( js是一门 </font><font color="#f57f17">跨平台 </font><font color="#ffffff" style="">的 </font><font color="#f57f17">解释型 脚本语言</font><font color="#ffffff" style="">)</font>
js变量运算符和表达式
<font color="#00ffff">变量 </font>
<font color="#f57f17">是什么: 在程序运行过程中,可以随时发生变化的量,我们称为变量 </font>
<font color="#f57f17">为什么:程序其实是一个输入、运算、输出的过程,变量本质上是一个容器(内存空间),用来保存数据</font>
怎么做
定义变量 var let
命名规范 1.数字、字母、下划线和$符组成 / 2.不能以数字开头 / 3.不能和关键字及保留字同名
<font color="#00ffff">五种基本数据类型 </font>
<font color="#00ffff">Number </font>
不同进制 <font color="#f57f17">2</font>进制(<font color="#f57f17">0b</font>)<font color="#f57f17">8</font>进制 (<font color="#f57f17">0o</font>)<font color="#f57f17">16</font>进制 (<font color="#f57f17">0x</font>)
<font color="#00ffff">String </font>
<font color="#00ffff">Boolean </font>
<font color="#00ffff">undefined </font>
变量<font color="#f57f17">定义</font>但<font color="#f57f17">没有赋值</font>
或者故意赋值为undefined
<font color="#00ffff">null</font>
变量定义赋值为null(<font color="#f57f17">一般是对对象进行初始化使用或者是删除一个对象的时候用到</font>)
<font color="#00ffff">运算符和表达式 </font>
运算符
<font color="#f57f17">概念:就是参与运算的符号</font>
算术运算符 + - * / %
自增自减运算符 ++ --
赋值运算符 = += -= *= /= %=
比较运算符 > < >= <= == != === !== ( <font color="#f57f17">表达式的值为布尔值</font> )
逻辑运算符 && 与 || 或 ! 非( <font color="#f57f17">短路的与和或有妙用可以简化代码</font> )
三元运算符 表达式1 ? 表达式2 : 表达式3
表达式
<font color="#f57f17">由变量或者常量与运算符组成的式子;表达式是有值的</font>;
数据类型转换
<font color="#ffeb3b">数据类型强制转换</font>
<font color="#00ffff">其他类型转数字:Number()</font>
<font color="#f57f17">强制将一个其它类型数据转化为数字类型,转不了就是NaN(not a number)</font>
<font color="#00ffff">转化字符串:</font>
如果字符串<font color="#f57f17">整体来看是一个数字</font>,那么就转化为这个<font color="#f57f17">数字 </font>
如果字符串<font color="#f57f17">整体来看</font><font color="#00ffff">不是</font><font color="#f57f17">一个数字</font>,那么就转化为<font color="#f57f17">NaN </font>
如果字符串是<font color="#f57f17">空串或空白串</font>,那么转化为<font color="#f57f17">0 </font>
<font color="#00ffff">转化boolean</font>
true ——> 1
false ——> 0
<font color="#00ffff">转化undefined</font>
undefined ——> NaN
<font color="#00ffff">转化null</font>
null ——> 0
<font color="#00ffff">其他类型转字符串:String()</font>
<font color="#f57f17">String() 强制将一个其它类型数据转化为字符串类型 </font>
转化字符串没有什么特殊,相当于直接在值外面加引号;
<font color="#00ffff">其他类型转布尔值:Boolean()</font>
<font color="#f57f17">Boolean() 强制将一个其它类型数据转化为boolean类型 </font>
转化数字的时候,除了0和NaN是false,其余都是true
转化字符串的时候,除了空字符串是false,其余都是true
转化undefined和null都是false
其他类型转化布尔值是false的情况:<font color="#f57f17">0 NaN ""(空串) undefined null </font>
<font color="#ffeb3b">数据类型的隐式转换</font>
<font color="#00ffff">判等(== / !=)</font>
先看两边是不是<font color="#f57f17">同种数据类型</font>,如果<font color="#f57f17">是 ——></font> 直接看一不一样就ok了 | 如果<font color="#f57f17">不是 ——></font> 两边都转数字
遇到null的时候有特殊情况
<font color="#f57f17">空串</font>和null不相等
<font color="#f57f17">false</font>和null不相等
<font color="#f57f17">0</font>和null不相等
<font color="#00ffff">undefined</font>和null相等
<font color="#00ffff">其余运算和比较情况</font>
第一步:先看是不是<font color="#f57f17">+</font>
如果是+看<font color="#f57f17">有没有字符串</font>,如果有字符串就是<font color="#f57f17">拼串</font>
第二步:看看是不是<font color="#f57f17">比较</font>
如果是比较,看看是不是<font color="#f57f17">两边都是字符串</font>,如果是,<font color="#f57f17">比的是字符串的Unicode编码</font>
第三步:如果不是前两种情况:
全部转数字(空串和空白穿转数字是0)
有NaN的情况
1.所有东西和NaN进行算数运算结果都是NaN
2.所有东西和NaN比较大小结果都是false
3.所有东西和NaN都不相等,包括NaN
<font color="#00ffff">全等和不全等</font>
不会出现数据类型转换(<font color="#f57f17">类型和值都必须相同才算全等</font>)
流程控制语句
<font color="#00ffff">概念</font>:流程就是一个<font color="#f57f17">过程</font>,在js代码执行的过程中,<font color="#f57f17">有时需要让一段代码执行,有时又不需要让一段代码执行</font>,这是一种过程,<font color="#f57f17">有时又需要重复去执行某段代码</font>,此时我们就需要流程控制语句。
<font color="#00ffff">语句结构分类</font>
1.顺序结构 —— js默认由上至下执行
2.分支结构 —— js会根据条件的判断,决定是否执行某段代码
3.循环结构 —— js会根据条件的判断,反复的执行某段代码
<font color="#00ffff">分支结构</font>
<font color="#ffffff">if语句</font><font color="#00ffff"> </font>—— <font color="#f57f17"> if</font> <font color="#00ffff">|</font> <font color="#f57f17">if</font>......<font color="#f57f17">else</font>....... <font color="#00ffff">|</font> <font color="#f57f17"> if</font>......<font color="#f57f17">else if</font>.......<font color="#f57f17">else if</font> .......... <font color="#f57f17">else</font> .........
switch......case......default 语句
<font color="#00ffff">循环结构</font>
for( <font color="#f57f17">初始化表达式</font> ; <font color="#f57f17">条件表达式</font> ; <font color="#f57f17">自增自减表达式</font> ){ <font color="#f57f17">循环体</font>(代码块) }
for( var <font color="#00ffff">key</font> in <font color="#00ffff">dog</font> ) { console.log(<font color="#00ffff"> key </font>,<font color="#00ffff"> dog[ key ]</font> ) } ——> 用来遍历对象 是对象都可以遍历
break和continue
continue : 结束本次循环,返回从下一次继续开始
break :
在循环中 : 跳出离它最近的一层循环
在switch.......case语句中跳出switch语句
对象数据类型(又称<font color="#f57f17">引用数据类型</font>)
写在最前面
<b><font color="#f57f17">|</font> </b>如果存储一个<font color="#ffeb3b">简单的数据</font>(一个数字,一个字符串)直接<font color="#ffeb3b">var a = 10</font><font color="#ffffff">;</font>
<b style=""><font color="#f57f17">|</font></b> 如果存储<font color="#ffeb3b">一堆的数据</font> 此时我们想到<font color="#ffeb3b">数组</font><font color="#ffffff">,</font><font color="#ffeb3b"> </font>数组就是专门用来<font color="#ffeb3b">存储多个数据</font>用的;
<b><font color="#f57f17">|</font></b> 如果我们想要存储<font color="#ffeb3b">一段代码</font>,此时我们需要<font color="#ffeb3b">函数 </font><font color="#ffffff">;</font>
<font color="#f57f17"><b>| </b></font>如果我们想要描述一个<font color="#ffeb3b">复杂的事物</font>,比如说一个人,一台电脑,一辆车(需要用到多个属性或者方法才能描述清楚),此时需要用到<font color="#ffeb3b">对象</font>;
<font color="#f57f17"><b>|</b></font> <font color="#ffeb3b">数组</font>和<font color="#ffeb3b">函数</font>也是<font color="#ffeb3b">对象</font><font color="#ffffff">;</font>
数组
<font color="#00ffff">概念</font>:具有相同类型(或者不同类型)的<font color="#f57f17">数据有序集合</font>;一次性的让我们存储多个数据;
<font color="#00ffff">创建数组</font>:
1.字面量创建 let arr1=[ 1, 2 , 3 ]
2.构造函数创建 let arr2 = new Array( 2 , 4 , 6 )
<font color="#00ffff">数组的长度和下标</font>
长度:<font color="#f57f17">arr.length</font>
下标:从<font color="#f57f17">0</font>开始 ——><font color="#f57f17"> arr.length - 1</font>
伪数组
<font color="#00ffff">特点</font>
1.拥有 <font color="#f57f17">length</font> 属性,可以使用<font color="#f57f17">索引</font>来取元素
2<font color="#f57f17">.不具有</font>数组所具有的方法
3.伪数组<font color="#f57f17">长度不可变</font>,真数组长度可以变
4.可以通过<font color="#f57f17">for in</font>遍历
<font color="#f57f17">伪数组</font>是一个<font color="#00ffff"> Object</font>,而真实的<font color="#f57f17">数组</font>是一个<font color="#f57f17"> </font><font color="#00ffff">Array</font>
伪数组存在的<font color="#00ffff">意义</font>,是可以让<font color="#f57f17">普通的对象</font>也能正常使用<font color="#f57f17">数组</font>的很多<font color="#f57f17">方法 </font>
<font color="#00ffff">常见伪数组</font>
函数内部的 <font color="#f57f17">arguments </font>
DOM 对象列表(比如通过 <font color="#f57f17">document.getElementsByTags </font>得到的列表)
函数
<font color="#00ffff">概念</font>:具有某种特定功能的代码块 <font color="#f57f17">——></font> 想象成工具或者工厂
<font color="#00ffff">为什么要有函数</font>
1.解决代码的冗余问题,形成代码复用;
2.可以把整个代码项目,通过函数模块化;
3.封装代码,让函数内部的代码对外部不可见;
<font color="#00ffff">函数的定义</font>
字面量定义
function <font color="#f57f17">函数名</font>(){ <font color="#f57f17">函数体</font> }
函数表达式定义
var <font color="#f57f17">函数名</font> = function(){ <font color="#f57f17">函数体</font> }
函数定义三要素
<font color="#00ffff">功能:</font>即<font color="#f57f17">函数名</font>,见名思意,看到了函数名就想到了这个函数的功能,函数名字最好使用<font color="#f57f17">动词</font><font color="#ffffff">;</font>
<font color="#00ffff">参数</font>:()里面是函数的参数(<font color="#f57f17">形参</font>),定义函数的时候要考虑这个函数是否有参数;
<font color="#00ffff">返回值:</font>函数最终都会有一个返回值;定义函数的时候也要考虑这个函数是否需要返回值;
<font color="#00ffff">函数调用</font>
函数名<font color="#f57f17">()</font>
<font color="#ffffff">这个</font><font color="#f57f17">表达式</font><font color="#ffffff">整体的</font><font color="#f57f17">值</font>就是函数定义当中<font color="#f57f17">return</font>后面的值;如果函数定义当中<font color="#f57f17">没有</font><font color="#ffffff">写</font><font color="#f57f17">return</font>,那么其实相当于默认<font color="#f57f17">return</font>一个<font color="#f57f17">undefined</font>.只是把return省略了;
<font color="#00ffff">return的作用</font>
1. 返回值
2. 当函数执行到<font color="#f57f17">return</font>的时候,函数就立即<font color="#f57f17">结束了</font>,即使return下面还有代码,也不再执行
<font color="#00ffff">参数</font>
1.参数在函数<font color="#f57f17">定义</font>当中被称作<font color="#f57f17">形式参数</font>,简称<font color="#f57f17">形参</font>;
2.函数<font color="#f57f17">调用</font>的时候,我们在()当中所写的也叫做参数,叫做<font color="#f57f17">实际参数</font>,简称<font color="#f57f17">实参</font>;
函数<font color="#f57f17">调用</font>的时候,我们<font color="#f57f17">写实际参数</font>被称作<font color="#f57f17">函数传参</font>,传参的本质是把函数调用的<font color="#f57f17">实参</font>,<font color="#f57f17">赋值</font>给函数定义的<font color="#f57f17">形参</font>;
函数的<font color="#f57f17">实参</font>,肯定是一个<font color="#f57f17">有值</font>的东西;函数定义的<font color="#f57f17">形参</font>:本质上相当于在函数内部<font color="#f57f17">var</font>了变量;
<font color="#00ffff">函数的分类 (按参数和返回值分)</font>
无参无返回值( <font color="#f57f17">通常情况下 很少有这样的函数,一般都是需要将代码模块化的时候,纯粹的去封装功能使用的 </font>)
有参无返回值
无参有返回值
有参有返回值
<font color="#00ffff">函数的分类(按调用方式分)</font>
立即调用函数表达式(<font color="#f57f17">IIFE</font>)
<font color="#00ffff">(</font> function ( <font color="#f57f17">形参</font> ) { <font color="#f57f17">代码块</font> }<font color="#00ffff"> )</font>(<font color="#f57f17">实参</font>)
<font color="#00ffff">特点</font>
1.函数定义的的时候执行
2.只执行一次
3.不发生预解析(函数内部会发生预解析)
<font color="#00ffff">作用</font>
1.防止外部命名空间污染
2.隐藏内部代码暴露接口
3.对项目的初始化
回调函数
<font color="#00ffff">概念</font>:回调函数就是一个被作为<font color="#f57f17">参数</font>传递的<font color="#f57f17">函数</font>。(我们<font color="#f57f17">定义</font>的,我们<font color="#f57f17">没有调用</font>,但最终<font color="#f57f17">执行</font>了)
<font color="#00ffff">应用场景:</font>
事件回调
定时器
AJAX
生命周期回调函数
函数递归
<font color="#00ffff">概念:</font><font color="#f57f17">递归</font>就是一个函数在它的<font color="#f57f17">函数体内调用它自身</font>。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归函数必须有<font color="#f57f17">结束条件</font>。
<font color="#00ffff">递归两要素:</font>
1. <font color="#f57f17">结束条件</font><font color="#ffffff">:</font> 必须有一个明显的结束条件,不能一直递归下去
2. <font color="#f57f17">递推关系</font><font color="#ffffff">:</font><font color="#f57f17"> </font>每一次调用都要有一个趋近结束条件的趋势
<font color="#9e9e9e">函数的递归调用是一把双刃剑,如果设计的好,可以帮我们简单的处理事情,如果设计不好就是灾难 </font>
<font color="#00ffff">Arguments 函数实参伪数组 </font>
arguments是存在于函数内部的,函数外部没有这个东西,它代表的是函数的实参伪数组;
对象
<font color="#00ffff">概念</font>:<font color="#f57f17">无序</font>的<font color="#f57f17">键值对</font>(名值对)的<font color="#f57f17">集合</font>就叫做对象;
<font color="#00ffff">对象的创建方法</font>
<font color="#ffeb3b">字面量创建</font>(<font color="#9e9e9e">object 的实例对象</font>)
var obj = { 键值对 }
<font color="#ffeb3b">构造函数创建</font><font color="#ffffff">(一)</font>(<font color="#9e9e9e">object 的实例对象</font>)
var obj = new Object({ <font color="#f57f17">键值对</font> })
<font color="#ffeb3b">构造函数创建</font><font color="#ffffff">(二)</font>(<font color="#e57373">特定函数的实例对象</font>)
function<font color="#00ffff"> Car</font>(<font color="#f57f17">name , price</font>){ this.name = name ; this.price = price}
var obj = new Car ( '特斯拉' ,200000 )
<font color="#ffeb3b">工厂函数创建</font>(<font color="#9e9e9e">object 的实例对象</font>)
构造函数.
<font color="#00ffff">概念</font>
构造函数<font color="#f57f17">本质</font>上也<font color="#f57f17">是</font>一个<font color="#f57f17">函数</font>,只不过通常我们把构造函数的<font color="#f57f17">名字</font>写成<font color="#f57f17">大驼峰</font>;
在js当中,没有类的概念(<font color="#f57f17">5版本</font>),构造函数可以理解为<font color="#f57f17">类</font>;
任何的函数都可以是普通函数,也可以是构造函数,就看你在怎么用;
<font color="#00ffff">构造函数执行流程</font>
1.立刻创建一个新的对象
2.将函数中的this指向<font color="#f57f17">新创建的对象</font>
3.逐行执行函数中的代码
4.将新创建对象作为返回值返回
this的总结
<font color="#00ffff">什么是this</font>
一个关键字, 一个<font color="#f57f17">内置</font>的<font color="#f57f17">引用变量 </font>
在<font color="#f57f17">函数中</font>都可以<font color="#f57f17">直接使用</font>this
this代表<font color="#f57f17">调用函数</font>的当前<font color="#f57f17">对象</font>(函数的调用者)
在定义函数时,<font color="#f57f17"> this</font>还没有确定, 只有在<font color="#f57f17">执行时才动态确定</font>(绑定)的(<font color="#00ffff">箭头函数例外</font>)
<font color="#00ffff">确定this指向</font>
1.普通函数调用:this指向<font color="#e57373">window</font> ——> test( )
2.函数作为<font color="#f57f17">方法</font>调用: this指向调用这个方法的对象<font color="#f57f17"> </font><font color="#e57373">obj </font>——> obj.test( )
3.函数作为<font color="#f57f17">构造函数</font><font color="#ffffff">调用</font>:this指向<font color="#e57373">准备实例化出来的那个对象</font><font color="#f57f17"> </font><font color="#ffffff">——> new test( )</font>
4.<font color="#f57f17">事件</font>回调函数中:this指向<font color="#e57373">事件源 </font>
5.<font color="#f57f17">call</font>和<font color="#f57f17">apply</font>中:this由<font color="#e57373">自己指定</font>
6.<font color="#f57f17">定时器</font>:this指向<font color="#e57373">window</font>
7.<font color="#f57f17">箭头</font>函数中:this指向<font color="#e57373">定义时所在作用域的this</font>
js内置对象及方法
Math对象
<font color="#e57373">Math.</font><font color="#00ffff">round </font><font color="#ffffff">(2.5</font><font color="#00ffff">) </font><font color="#ff9800">——></font><font color="#00ffff"> </font>四舍五入
<font color="#e57373">Math.</font><font color="#00ffff">floor ( </font><font color="#ffffff">2.9</font><font color="#00ffff"> )</font><font color="#ff9800"> ——> </font>向下取整
<font color="#e57373">Math.</font><font color="#00ffff">ceil ( </font><font color="#ffffff">2.1</font><font color="#00ffff"> ) </font><font color="#ff9800">——></font> 向上取整
<font color="#e57373">Math.</font><font color="#00ffff">max ( </font><font color="#ffffff">24, 55, 78, 6</font><font color="#00ffff"> )</font> <font color="#ff9800">——></font> 获取最大值
<font color="#e57373">Math.</font><font color="#00ffff">min ( </font><font color="#ffffff">24, 55, 78, 6</font><font color="#00ffff"> ) </font><font color="#ff9800"> ——> </font>获取最小值
<font color="#e57373">Math</font><font color="#00ffff">.PI</font> <font color="#ff9800">——></font> 圆周率
<font color="#e57373">Math.</font><font color="#00ffff">sin(</font><font color="#ffffff"> Math.PI/6</font><font color="#00ffff"> )</font> <font color="#ff9800"> ——></font> 正弦( 算的是弧度,不是角度 )
<font color="#e57373">Math.</font><font color="#00ffff">pow( </font><font color="#ffffff">2, 4 </font><font color="#00ffff">)</font> <font color="#ff9800"> ——></font> 幂运算
<font color="#e57373">Math.</font><font color="#00ffff">abs (</font><font color="#ffffff"> -1</font><font color="#00ffff"> )</font><font color="#ff9800"> ——></font> 绝对值
<font color="#e57373">Math.</font><font color="#00ffff">sqrt( 9 )</font> <font color="#ff9800">——></font> 开平方
<font color="#e57373">Math.</font><font color="#00ffff">random( )</font> <font color="#ff9800">——></font> 随机数,随机的范围 <font color="#ff9800">从0到1,</font>但<font color="#ff9800">不包含1</font>
Math.floor( Math.random ( ) * (<font color="#ff9800"> b - a + 1 </font>) ) + a ——> 求一个随机数的范围a到b(包含a,b)
Date对象
new Date ( ) ——> 获取的当前时间 ( 是一个对象 )
new Date ( s ) ——> 将时间戳转为date实例
Date.now ( ) ——> 时间戳 <font color="#ffff00">****</font>
字符串方法
<font color="#ffeb3b">es5方法</font>
<font color="#ffffff"> var str = “hellow world”</font>
<font color="#e57373">str</font><font color="#00ffff">.charAt(</font><font color="#f57f17"> 0</font><font color="#00ffff"> ) </font><font color="#ffeb3b"> ***</font>
功能:找到字符串<font color="#f57f17">对应索引</font>的字符
参数 :索引(下标)
返回值: 返回找到的字符<font color="#00ffff"> ——></font><font color="#e57373">'h'</font>
<font color="#e57373">str</font><font color="#00ffff">.charCodeAt( </font><font color="#f57f17">0</font><font color="#00ffff"> ) </font>
功能 :将字符串<font color="#f57f17">对应索引</font>( 下标 )的<font color="#f57f17">字符</font>转成<font color="#f57f17">unicode</font>码
参数 索引(下标)
返回值 unicode码<font color="#00ffff"> ——></font><font color="#e57373">104</font>
<font color="#81c784">String</font><font color="#00ffff">.fromCharCode(</font><font color="#f57f17">49</font><font color="#00ffff">)</font>
功能 :将<font color="#f57f17">unicode</font>码转成<font color="#f57f17">字符</font>
参数: <font color="#f57f17">unicode码 </font>
返回值: Unicode码对应的字符 <font color="#00ffff">——></font><font color="#e57373">'1'</font>
<font color="#e57373">str</font><font color="#00ffff">.concat( </font><font color="#f57f17">'123'</font><font color="#00ffff"> ) </font><font color="#ffeb3b">*****</font>
功能 :将<font color="#f57f17">原串</font>和<font color="#f57f17">传入</font>的<font color="#f57f17">字符串拼接</font>,返回一个新串
参数: 字符串
返回值 :拼接后的字符串 <font color="#00ffff">——></font> <font color="#e57373">'hellow world123' </font>
<font color="#e57373">str</font><font color="#00ffff">.indexOf( </font><font color="#f57f17">'h' , 2</font><font color="#00ffff"> )</font> <font color="#ffeb3b">*****</font>
功能 :在<font color="#f57f17">原串</font>中<font color="#f57f17">查找传入的字符串</font>,<font color="#ffeb3b">查到</font>之后<font color="#e57373">返回查到的下标</font>,<font color="#ffeb3b">查不到</font><font color="#e57373">返回-1</font>,<font color="#ffeb3b">从左往右查 </font>
<font color="#00ffff">一个参数</font>: 当有<font color="#f57f17">多个</font>重复字符串的时候,只返回<font color="#f57f17">第一个</font>查到的下标
<font color="#00ffff">两个参数</font> :从<font color="#f57f17">第二个参数的下标位置开始查</font>,查到返回下标,查不到返回-1
参数
<font color="#00ffff">第一个参数</font> :字符串
<font color="#00ffff">第二个参数</font>: 开始查找的下标( 如果<font color="#f57f17">没有</font>第二个参数,从下标为<font color="#f57f17">0</font>的位置<font color="#f57f17">开始</font>查 )
返回值:<font color="#f57f17"> 查到</font>返回<font color="#f57f17">下标</font>,<font color="#f57f17">查不到</font>返回<font color="#f57f17">-1</font><font color="#00ffff"> ——></font><font color="#e57373">-1 </font>
<font color="#e57373">str</font><font color="#00ffff">.lastIndexOf( </font><font color="#f57f17">'h' , 2</font><font color="#00ffff"> ) </font><font color="#ffeb3b">*****</font>
功能 :在<font color="#f57f17">原串</font>中<font color="#f57f17">查找传入的字符串</font>,<font color="#ffeb3b">查到</font>之后<font color="#e57373">返回查到的下标</font>,<font color="#ffeb3b">查不到</font><font color="#e57373">返回-1</font>,<font color="#ffeb3b">从右往左查 </font>
参数:同<font color="#00ffff">indexOf()</font>
唯一的不同点是:<font color="#00ffff">lastindexOf()</font>如果<font color="#f57f17">没有第二个参数</font>,从str的<font color="#f57f17">最右边</font>开始查
返回值:同<font color="#00ffff">indexOf()</font>
<font color="#e57373">str</font><font color="#00ffff">.replace(</font><font color="#f57f17">'ll', '123'</font><font color="#00ffff">) </font>
功能 :字符串<font color="#f57f17">替换</font><font color="#ffffff">,</font><font color="#f57f17">第二个</font>串<font color="#f57f17">替换</font>原串中的<font color="#f57f17">第一个</font>串
参数 :
第一个参数: 字符串
第二个参数: 字符串
返回值: <font color="#f57f17">替换后</font>的<font color="#f57f17">字符串 </font><font color="#00ffff">——> </font><font color="#e57373">'he123ow world'</font>
<font color="#e57373">str</font><font color="#00ffff">.search( </font><font color="#f57f17">'h'</font><font color="#00ffff"> )</font>
功能 :字符串查找,返回找到的下标,找不到返回-1
参数: 字符串
返回值:查到的下标
<font color="#e57373">str</font><font color="#00ffff">.match( </font><font color="#f57f17">/1/g</font><font color="#00ffff"> )</font>
<font color="#e57373">str</font><font color="#00ffff">.localeCompare( </font><font color="#f57f17">'ABCD123' </font><font color="#00ffff">) </font>
功能:原串和传入字符串<font color="#f57f17" style="">比较</font>(比较的<font color="#f57f17">unicode</font>码)
参数:字符串
返回值:原串大<font color="#00ffff">——></font><font color="#e57373">1</font> ,相等<font color="#00ffff"> ——></font> <font color="#e57373">0</font> ,原串小<font color="#00ffff"> ——></font><font color="#e57373">-1 </font>
<font color="#e57373">str</font><font color="#00ffff">.slice( </font><font color="#00ffff">) </font> <font color="#ffff00">***** </font><font color="#00ffff"> ——></font><font color="#ffff00">切片</font><font color="#00ffff"> ——> </font><font color="#ffff00">字符串 </font><font color="#e57373">( 裁剪到指定下标)</font>
<font color="#e57373">str</font><font color="#00ffff">.slice(</font><font color="#f57f17"> 3</font><font color="#00ffff">)</font> ——><font color="#e57373"> 'low world'</font>
<font color="#e57373">str</font><font color="#00ffff">.slice(</font><font color="#f57f17">3, 7</font><font color="#00ffff">) </font>——> <font color="#e57373">'low '</font>
<font color="#e57373">str</font><font color="#00ffff">.slice(</font><font color="#f57f17">-3</font><font color="#00ffff">) </font> ——> <font color="#e57373">'rld'</font>
<font color="#e57373">str</font><font color="#00ffff">.slice(</font><font color="#f57f17">-7, -3</font><font color="#00ffff">) </font>——><font color="#e57373"> 'w wo'</font>
功能:裁剪字符串
只传<font color="#f57f17">一个参数</font><font color="#ffffff">:</font>从第一个参数下标开始裁剪,裁剪到字符串末尾
传<font color="#f57f17">两个参数</font><font color="#ffffff">:从</font>第一个参数下标位置裁剪,裁剪到第二个参数下标位置,但<font color="#f57f17">不包含</font>第二个参数下标
参数
第一个参数:下标
第二个参数:下标
参数可以为<font color="#f57f17">负数</font>( 负数是<font color="#f57f17">从右往左</font><font color="#ffffff">数,</font>倒数第一个字符下标为<font color="#f57f17">-1 </font>) ——> <font color="#ffff00">从左往右裁剪 </font>
返回值: 返回裁剪下来的字符串
<font color="#e57373">str</font><font color="#00ffff">.split(</font><font color="#f57f17"> 'l'</font><font color="#00ffff"> ) </font><font color="#ffff00"> ***** </font><font color="#00ffff"> ——></font><font color="#ffff00">分割 </font><font color="#00ffff">——> </font><font color="#ffff00">数组</font>
功能:分割字符串成数组
以传入的字符串为分隔符分割字符串,分割成数组 <font color="#00ffff">——> </font><font color="#e57373">['he', '', 'ow wor', 'd']</font>
<font color="#f57f17">传空串的时候</font>,会把每一个字符都分割开组成一个数组 <font color="#00ffff">——> </font><font color="#e57373">['h', 'e', 'l', 'l', 'o', 'w', ' ', 'w', 'o', 'r', 'l', 'd']</font>
<font color="#f57f17">不传参的时候</font>,把原串直接放在一个数组中返回 ——><font color="#e57373"> ['hellow world']</font>
参数: 字符串
返回值:数组
<font color="#e57373">str</font><font color="#00ffff">.substr( )</font><font color="#ffff00"> *** </font><font color="#00ffff"> ——></font><font color="#ffff00">截取</font> <font color="#00ffff">——></font> <font color="#ffff00">字符串</font> <font color="#e57373">( 裁剪到指定长度)</font>
<font color="#e57373">str.</font><font color="#00ffff">substr(</font><font color="#f57f17">3</font><font color="#00ffff">) ——></font><font color="#e57373"> 'low world'</font>
<font color="#e57373">str</font><font color="#00ffff">.substr(</font><font color="#f57f17">3, 5</font><font color="#00ffff">) ——> </font> <font color="#e57373">'low w'</font>
<font color="#e57373">str</font><font color="#00ffff">.substr(</font><font color="#f57f17">-3</font><font color="#00ffff">) ——> </font><font color="#e57373">'rld'</font>
<font color="#e57373">str</font><font color="#00ffff">.substr(</font><font color="#f57f17">-7, 4</font><font color="#00ffff">) </font>——><font color="#e57373"> 'w wo'</font>
功能:裁剪字符串
传一个参数: <font color="#f57f17">传入的下标开始</font>裁剪,裁剪到字符串的<font color="#f57f17">末尾 </font>
传两个参数: <font color="#f57f17">传入的下标开始</font>裁剪,裁剪到<font color="#f57f17">参数二的长度</font>结束
参数:
参数一:<font color="#e57373">下标</font>( <font color="#f57f17">可以为负数</font>,从右往左数,<font color="#f57f17">-1</font>代表字符串<font color="#f57f17">最后一个</font>下标 )
参数二:<font color="#e57373">长度</font>( 不能为负数 )
返回值:返回裁剪后的字符串
<font color="#e57373">str</font><font color="#00ffff">.substring( ) ——></font><font color="#ffff00">截取 </font><font color="#00ffff">——></font><font color="#ffff00"> 字符串</font><font color="#e57373"> ( 裁剪到指定下标,</font><font color="#ffff00">下标不能为负</font><font color="#e57373">)</font>
<font color="#e57373">str</font><font color="#00ffff">.substring( </font><font color="#f57f17">2 </font><font color="#00ffff">) </font>
<font color="#e57373">str</font><font color="#00ffff">.substring( </font><font color="#f57f17">2,5 </font><font color="#00ffff">) </font>
功能: 裁剪字符串
只传<font color="#f57f17">一个参数</font>:从第一个参数下标开始裁剪,裁剪到字符串末尾
传<font color="#f57f17">两个参数</font>:从参数一下标开始裁剪到参数二下标结束( <font color="#f57f17">不包含参数二下标 </font>)
参数
参数一:下标(<font color="#f57f17">不能为负</font>)
参数二:下标(<font color="#f57f17">不能为负</font>)
返回值:返回裁剪后的字符串
<font color="#e57373">str</font><font color="#00ffff">.toLowerCase( ) </font><font color="#ffff00">***</font>
<font color="#e57373">str</font><font color="#00ffff">.toUpperCase( ) </font><font color="#ffff00">*** </font>
功能:<font color="#f57f17">toLowerCase( )</font>转小写 <font color="#f57f17">toUpperCase( )</font>转大写
参数 :没有参数
返回值 :返回转化大小写后的字符串
<font color="#e57373">str</font><font color="#00ffff">.toLocaleLowerCase( ) </font>
<font color="#e57373">str</font><font color="#00ffff">.toLocaleUpperCase( ) </font>
功能:<font color="#f57f17">toLocaleLowerCase( )</font>转小写 <font color="#f57f17">toLocaleUpperCase( )</font>转大写
参数: 没有参数
返回值:返回转化大小写后的字符串
区别 :
与 toUpperCase( ) 不同的是,toLocaleUpperCase( ) 方法按照<font color="#f57f17">本地方式</font>把字符串转换为大写。
只有<font color="#f57f17">几种语言</font>(如土耳其语)具有地方特有的大小写映射,所以该方法的返回值<font color="#f57f17">通常</font>与 toUpperCase( )一样
<font color="#e57373">str</font><font color="#00ffff">.trim( ) </font><font color="#ffff00">*****</font>
功能: <font color="#f57f17">去除</font>字符串<font color="#f57f17">首尾</font>的<font color="#f57f17">空格 </font>
参数: 没有参数
返回值:去除首位空格后的字符串
<font color="#ffff00">es6方法</font>
<font color="#e57373">str</font><font color="#00ffff">.includes(</font><font color="#f57f17">"345"</font><font color="#00ffff">) </font>
功能 :查找<font color="#f57f17">传入</font>的<font color="#f57f17">字符串</font>是不是<font color="#f57f17">在原串当中 </font>
参数 :字符串
返回值 :查到返回true,查不到返回false
<font color="#e57373">str</font><font color="#00ffff">.startsWith( </font><font color="#f57f17">"345"</font><font color="#00ffff"> ) </font>
功能:判断是不是以传入字符串<font color="#f57f17">开始</font>的
参数 :字符串
返回值 :查到返回true,查不到返回false
<font color="#e57373">str</font><font color="#00ffff">.endsWith(</font><font color="#f57f17"> "23A"</font><font color="#00ffff"> ) </font>
功能 :判断是不是以传入字符串<font color="#f57f17">结束</font>的
参数 :字符串
返回值 :查到返回true,查不到返回false
<font color="#e57373">str</font><font color="#00ffff">.repeat(</font><font color="#e57373">2</font><font color="#00ffff">) </font>
功能 :<font color="#f57f17">重复</font>字符串
参数 :重复的<font color="#f57f17">次数 </font>
返回值 :<font color="#f57f17">重复</font>后的<font color="#f57f17">字符串 </font>
<font color="#ffffff">数组方法 </font>
数组方法(一)
<font color="#e57373">arr.</font><font color="#00ffff">push()</font><font color="#ffff00">****</font>
功能:往数组末尾处添加成员
参数:不限个数
返回值:返回<font color="#ff9800">数组长度(</font><font color="#00ffff">添加成员后</font><font color="#ff9800">)</font>,<font color="#ff9800">修改了原数组</font>
<font color="#e57373">arr.</font><font color="#00ffff">pop()</font><font color="#ffff00">****</font>
功能 :数组<font color="#ff9800">末尾</font>删除一个成员
参数: 没有参数
返回值: <font color="#ff9800">删除的成员</font>,修改了原数组
<font color="#e57373">arr.</font><font color="#00ffff">unshift()</font><font color="#ffff00">****</font>
功能 :数组的<font color="#ff9800">开头添加成员 </font>
参数: 不限个数
返回值 :返回<font color="#ff9800">数组的长度(</font><font color="#00ffff">添加成员后</font><font color="#ff9800">)</font>,<font color="#ff9800">修改了原数组 </font>
<font color="#e57373">arr.</font><font color="#00ffff">shift()</font><font color="#ffff00">****</font>
功能: 数组的<font color="#ff9800">开头删除</font>一个成员
参数 :没有参数
返回值 :<font color="#ff9800">删除的成员</font>,修改了原数组
<font color="#e57373">arr.</font><font color="#00ffff">splice()</font> <font color="#ffff00">****</font>
功能:这个方法能实现<font color="#ff9800">添加、删除、修改</font>数组的功能
删除:
<font color="#ff9800">arr.splice(</font><font color="#e57373">2</font><font color="#ff9800">) </font>
从下标为<font color="#ff9800">2</font>的位置<font color="#ff9800">开始删除</font>,删除至<font color="#ff9800">数组末尾</font>,<font color="#ffffff">返回</font><font color="#ff9800">删除成员组成的数组</font>,修改了原数组
<font color="#ff9800">arr.splice(</font><font color="#e57373">2, 3</font><font color="#ff9800">) </font>
从下标为<font color="#ff9800">2</font>的位置<font color="#ff9800">开始删除</font>,删除<font color="#ff9800">3个</font>成员,<font color="#ffffff">返回</font><font color="#ff9800">删除成员组成的数组</font>,修改了原数组
新增:
<font color="#ff9800">arr.splice( </font><font color="#e57373">2, 0, 25</font><font color="#ff9800"> )</font>
从下标为<font color="#ff9800">2</font>的位置开始<font color="#ff9800">删除0个</font><font color="#e57373">(或多个)</font><font color="#ffffff">成员</font>,<font color="#ff9800">插入一个</font><font color="#e57373">(或多个)</font>成员
返回<font color="#ff9800">删除成员组成的数组</font>( 删除0个成员返回的就是空数组 ),修改了原数组
修改:
从下标为2的位置删除3成员,插入25和47两个成员,,返回删除成员组成的数组,修改了原数组
<font color="#ff9800">arr.splice(</font><font color="#e57373">2, 3, 25, 47</font><font color="#ff9800">) </font>
从下标为<font color="#ff9800">2</font>的位置<font color="#ff9800">删除3成员</font>,插入25和47两个成员,,返回删除成员组成的数组,修改了原数组
<font color="#e57373">arr.</font><font color="#00ffff">reverse()</font><font color="#ffeb3b">****</font>
功能 :反转数组
参数: 没有参数
返回值: <font color="#ff9800">返回原数组</font>,修改了原数组
<font color="#e57373">arr.</font><font color="#00ffff">concat( </font><font color="#e57373">[5, 9, 7] </font><font color="#00ffff"> ) </font>
功能 :拼接数组
参数: 数组
返回值: 原数组与传入数组<font color="#ff9800">拼接后的新数组</font>,<font color="#4caf50">不改变</font>原数组
<font color="#e57373">arr.</font><font color="#00ffff">join( "abc" ) </font><font color="#ffeb3b">****</font>
功能: 数组成员以传入字符串为间隔<font color="#ff9800">拼接成字符串 </font>
传<font color="#ff9800">空串</font>直接数组成员拼接成字符串
不传参数<font color="#ff9800">,默认以逗号为间隔</font>拼接成字符串
参数: 字符串(可以不传)
返回值 :<font color="#ff9800">拼接后的字符串</font>,<font color="#4caf50">不修改</font>原数组
<font color="#e57373">arr.</font><font color="#00ffff">slice( 2 ) </font><font color="#ffeb3b">****</font>
功能 :裁剪数组
传<font color="#ff9800">一个</font>参数,从传入下标开始获取到数组的末尾
传<font color="#ff9800">两个</font>参数,<font color="#ff9800">从参数一下标开始</font>获取,获取<font color="#ff9800">到参数二下标位置</font><font color="#ffffff">,</font>但不<font color="#ff9800">包含</font>下标二位置成员
如果是负数,<font color="#ff9800">从右往左数下标</font>,最后一个成员下标为-1
参数:
参数一 :下标 ( 可以为负数 )
参数二: 下标 ( 可以为负数 )
返回值 :
返回裁剪下来的数组,原数组不变
案例:
arr.slice( 2 )
arr.slice( 2, 5 )
arr.slice( -2 )
arr.slice( -6, -3 )
数组方法(二)
<font color="#e57373">arr.</font><font color="#00ffff">forEach(</font> ( item,index,currentArr ) => { 函数体 }<font color="#00ffff"> ) </font><font color="#ffff00">*****</font>
功能: 遍历数组
参数 :函数
返回值 :<font color="#ff9800">undefind,</font><font color="#4caf50">不改变原数组</font>
<font color="#e57373">arr.</font><font color="#00ffff">some( </font>( item,index,currentArr ) => { 函数体 return <font color="#ff9800">item > 6</font> }<font color="#00ffff"> )</font><font color="#ffff00">***</font>
功能: 检测数组成员<font color="#ff9800">是否满足检测函数条件</font><font color="#ffffff">(</font><font color="#ff9800"> </font><font color="#ffffff">由</font>检测函数的返回值控制 )
参数 :函数
返回值 :<font color="#ff9800">布尔值 </font>( 如果<font color="#ff9800">有</font>满足检测函数的直接返回<font color="#ff9800">true</font><font color="#ffffff">,</font>后续成员不再检测,<font color="#ffffff">如果</font><font color="#ff9800">都不满足</font>返回<font color="#ff9800">false</font> ),<font color="#4caf50">不改变原数组 </font>
<font color="#e57373">arr.</font><font color="#00ffff">every( </font>( item,index,currentArr ) => { 函数体 return <font color="#ff9800">item > 6 </font> } <font color="#00ffff">)</font><font color="#ffff00">***</font>
功能: 检测数组成员<font color="#ff9800">是否满足检测函数条件</font>( 由检测函数的返回值控制 )
参数 :函数
返回值 :布尔值 ( 如果<font color="#ff9800">都满足检测函数</font>的返回<font color="#ff9800">true</font>,遇到不满足<font color="#ff9800">直接返回false</font> ,后续成员不再检测 ),<font color="#4caf50">不改变原数组 </font>
<font color="#e57373">arr.</font><font color="#00ffff">map( </font>( item,index,currentArr ) => { 函数体 return <font color="#ff9800">item + 6 </font> }<font color="#00ffff"> )</font><font color="#ffff00">*****</font>
功能: 映射一个函数,对所有的成员进行<font color="#ff9800">逻辑处理</font>,得到对每个成员<font color="#ff9800">处理后的结果</font>组成的<font color="#ff9800">数组</font>
参数: 函数
返回值 :返回<font color="#ff9800">映射后的新数组</font>,不改变原数组
<font color="#e57373">arr.</font><font color="#00ffff">filter (</font> ( item,index,currentArr ) => { 函数体 return<font color="#ff9800"> item > 6 </font>} <font color="#00ffff">) </font><font color="#ffff00">*****</font>
功能: 过滤数组成员 ,对所有的成员进行逻辑处理,<font color="#ff9800">满足条件</font> ( 检测函数的返回值为真 ) 的会<font color="#ff9800">组成新数组 </font>
参数: 函数
返回值: <font color="#ff9800">满足过滤条件的元素</font>组成的<font color="#ff9800">新数组</font><font color="#ffffff">,</font>不改变原数组
<font color="#e57373">arr</font><font color="#00ffff">.find ( </font><font color="#ffffff">( item,index,currentArr ) => { 函数体 return </font><font color="#ff9800">item > 6 </font><font color="#ffffff">} </font><font color="#00ffff"> ) </font>
功能: 查找出<font color="#ff9800">第一个</font>符合检测条件的成员,找到符合条件的就<font color="#ff9800">不再继续寻找</font>了
参数: 函数
返回值 :符合条件的成员,<font color="#ff9800">不改变原数组 </font>
<font color="#e57373">arr.</font><font color="#00ffff">findIndex ( </font><font color="#ffffff">( item,index,currentArr ) => { 函数体 return</font><font color="#ff9800"> item > 6</font><font color="#ffffff"> }</font><font color="#00ffff"> ) </font>
功能:查找出符合检测条件的<font color="#ff9800">第一个成员</font>的下标,找到符合条件的就<font color="#ff9800">不再继续寻找</font>了
参数 :函数
返回值: 符合条件的成员<font color="#ff9800">下标,</font>不改变原数组
<font color="#e57373">arr.</font><font color="#00ffff">sort(</font><font color="#ffffff">(a,b)=> { return </font><font color="#ff9800">a - b</font><font color="#ffffff"> } </font><font color="#00ffff">)</font>
功能: 数组排序
参数: 函数
函数参数是数组中相邻两个成员
return a - b <font color="#ff9800">——> </font>升序
return b - a <font color="#ff9800"> ——></font> 降序
返回值; 返回<font color="#ff9800">排好序后的</font>原数组
<font color="#00ffff">arr.reduce( ) </font>
数组方法(三)
<font color="#e57373">arr.</font><font color="#00ffff">indexOf ( </font><font color="#ffffff">12 </font><font color="#00ffff">) </font>
功能: 在数组中查找成员,如果<font color="#ff9800">找到返回下标</font>,如果<font color="#ff9800">找不到返回 -1</font>
参数: 要查找的成员
返回值 :下标,找不到返回-1
应用场景:数组去重
<font color="#e57373">arr.</font><font color="#00ffff">includes ( </font><font color="#ffffff">12</font><font color="#00ffff"> ) </font>
功能 :在数组中<font color="#ff9800">查找成员</font>,如果找到返回<font color="#ff9800">true</font>,如果找不到返回<font color="#ff9800">false </font>
参数: 要查找的成员
返回值: 数组中包含查找成员返回<font color="#ff9800">true,</font>否则返回<font color="#ff9800">false </font>
应用场景:数组去重
<font color="#e57373">Array.</font><font color="#00ffff">from ( </font><font color="#ffffff">伪数组</font><font color="#00ffff"> )</font>
功能 :将伪数组转为一个真正的数组
参数: 伪数组
返回值: 伪数组转成的新数组
<font color="#e57373">Array.</font><font color="#00ffff">of()</font>
功能:创建数组
和new Array ( )的不同点 <font color="#00ffff">new Array</font>(<font color="#ff9800">3</font>) -> [<font color="#ff9800">und,und,und</font>] / <font color="#00ffff"> Array.of</font>(<font color="#ff9800">3</font>) -> [<font color="#ff9800"> 3</font> ]
<font color="#ffeb3b">包装对象</font>
<font color="#00ffff">概念</font>:<font color="#e57373">数值</font>、<font color="#e57373">字符串</font>、<font color="#e57373">布尔值</font>分别相对应的<font color="#e57373">Number</font>、<font color="#e57373">String</font>、<font color="#e57373">Boolean</font>三个<font color="#e57373">原生对象</font>,这三个原生对象可以把<font color="#e57373">原始类型</font>的值<font color="#e57373">变成</font>(包装成)<font color="#e57373">对象</font>
<font color="#00ffff">作用</font>:让基本数据类型也可以调用方法
<font color="#00ffff">执行机制</font>
<font color="#f57f17">a.toString( )</font> 干了三件事,这三件事看不到
1.a = new Number(a) 将a<font color="#f57f17">转化</font>成了一个包装对象
2 .调用包装对象的<font color="#f57f17">__proto__</font>上的toString方法
3.调用<font color="#f57f17">结束</font>后自动再让a<font color="#f57f17">变回基本值</font> a = 100;
<font color="#ffeb3b">valueof ( )</font> 和 <font color="#ffeb3b">toString ( )</font>
<font color="#00ffff">valueof( )</font>
调用<font color="#f57f17">valueOf</font>的时候,如果是<font color="#00ffff">包装对象</font><font color="#f57f17"> </font>, 返回的是包装对象的<font color="#00ffff">[[PrimitiveValue]]</font>基本值
如果<font color="#f57f17">不是</font>包装对象,返回的是<font color="#f57f17">对象本身 </font>
<font color="#00ffff">toString( )</font>
调用toString如果是<font color="#00ffff">包装对象</font>,直接<font color="#00ffff">基本值转成字符串</font>即可
如果<font color="#00ffff">不是</font>包装对象,调用toString返回的各不相同
<font color="#ffeb3b">数组</font>调用toString,把数组中括号去掉,剩余成员以逗号隔开转成字符串(例:<font color="#f57f17">[1 , 2 ,3] ——> </font><font color="#00ffff">‘ </font><font color="#f57f17">1 , 2 , 3 </font><font color="#00ffff">’ </font>)
<font color="#ffeb3b">函数</font>调用toString,把<font color="#f57f17">函数</font>数据直接<font color="#f57f17">转成字符串 </font>
<font color="#ffeb3b">对象</font>调用toString,返回<font color="#f57f17">[object Object] </font>
<font color="#00ffff">引用数据类型的运算和比较(转化规则)</font>
1. 对象都会去尝试调<font color="#f57f17">valueOf</font>去取基本值<font color="#f57f17">[[PrimitiveValue]] </font>
2.如果取到基本值就是基本值
3.如果<font color="#f57f17">取不到</font>基本值,会调用当前对象的<font color="#f57f17">toString() </font>
4.再使用基本数据类型运算、比较的规则(隐式转换)
<font color="#ffeb3b">localStorage</font>.setItem()和 <font color="#ffeb3b">localStorage</font>.getItem()
功能:做<font color="#f57c00">数据持久化</font>配合<font color="#f57c00">JSON</font>使用
正则表达式(<font color="#f44336">暂时战略性放弃</font>)
<b><font color="#ffffff">DOM( </font></b>Document <font color="#f57f17">Object</font> Model <b><font color="#ffffff">)</font></b>
DOM的概念
<font color="#00ffff">DOM</font>就是<font color="#f57f17">文档对象模型</font> Document Object Model
<font color="#00ffff">DOM</font>是<font color="#00ffff">W3C</font>组织推荐的,处理<font color="#00ffff">可扩展置标语言</font>的<font color="#00ffff">标准编程接口</font>。是一种与<font color="#f57f17">平台</font>和<font color="#f57f17">语言</font>无关的<font color="#00ffff">应用程序接口</font>(API),使<font color="#f57f17">程序</font>和<font color="#f57f17">脚本</font>有能力动态<font color="#f57f17">访问</font>和<font color="#f57f17">更新</font>文档的<font color="#e57373">内容</font>、<font color="#e57373">结构</font>以及<font color="#e57373">样式</font><font color="#ffffff">。</font>
<font color="#00ffff">DOM</font>描述了处理网页内容的<font color="#f57f17">方法</font>和<font color="#f57f17">接口 </font>
DOM树 window <font color="#00ffff">——></font> document <font color="#00ffff">——></font> documentElement ( <font color="#e57373">html</font> ) <font color="#00ffff">——></font> head + body
<font color="#00ffff">概念:</font>
<font color="#e57373">window</font>是<font color="#00ffff">浏览器窗口对象</font>,<font color="#f57f17">所有</font>东西都被当作是<font color="#e57373">window</font>的<font color="#f57f17">子对象 </font>
文档对象<font color="#e57373">document</font>是<font color="#e57373">window</font><font color="#ffff00">下</font>的一个属性,<font color="#f57f17">代表</font>整个<font color="#00ffff">DOM文档对象 </font>
<font color="#e57373" style="">document</font><font color="#ffff00">下</font>的<font color="#e57373">documentElement</font><font color="#f57f17">代表</font>根元素<font color="#00ffff">HTML</font>标签,之后一级一级往下分
文档树(<font color="#f57f17">DOM树</font>) 以<font color="#00ffff">HTML</font>为根节点 形成的一棵<font color="#f57f17">倒立的树状结构</font>,我们称作DOM树;这个树上所有的东西都叫节点,节点有很多类( <font color="#f57f17">我们主要关注 </font><font color="#ffff00">4 </font><font color="#f57f17">类</font> )<br>
<font color="#00ffff">四类主要关注的DOM节点:</font>
<font color="#f57f17">元素</font>节点 标签 ——><font color="#f57f17"> 挂在</font><font color="#00ffff">documentElement</font><font color="#f57f17">下面</font>
<font color="#f57f17">属性</font>节点 属性 <font color="#00ffff">——></font><font color="#f57f17"> 挂在</font><font color="#00ffff">元素节点</font><font color="#f57f17">身上</font>
<font color="#f57f17">文本</font>节点 内容 <font color="#00ffff">——></font> <font color="#f57f17">挂在</font><font color="#00ffff">元素节点</font><font color="#f57f17">身上 </font><font color="#e57373">( text )</font>
<font color="#f57f17">注释</font>节点 注释 <font color="#00ffff">——></font> <font color="#f44336">以后再研究,暂时没啥用</font>
<font color="#00ffff">window.onload事件</font>
一般情况我们都是<font color="#f57f17">等待页面加载完成之后</font>才去操作<font color="#f57f17">dom元素</font>,<font color="#e57373">如果</font>页面<font color="#f57f17">没有加载完成</font>就去获取<font color="#f57f17">dom元素</font>,有可能<font color="#f57f17">获取不到</font>,这时候<font color="#00ffff">window.onload</font>就被有了存在的意义了。
<font color="#00ffff">window.onload</font>是一个<font color="#f57f17">事件</font>,在文档<font color="#f57f17">加载完成</font>后能<font color="#f57f17">立即触发</font>,并且能够为该事件<font color="#f57f17">注册事件处理函数</font>。将要对对象或者模块进行操作的代码存放在处理函数中。
获取DOM元素,操作DOM元素
<font color="#00ffff">获取DOM元素</font>
<font color="#e57373">document.getElementById </font>
只能通过<font color="#f57f17">ID</font>去获取元素,并且只能获取<font color="#f57f17">一个元素</font>返回
<font color="#e57373">document.getElementsByTagName </font>
只能通过<font color="#f57f17">标签名</font>去获取,并且获取到是<font color="#f57f17">多个</font><font color="#ffffff">,</font><font color="#f57f17">返回</font>一个<font color="#f57f17">伪数组</font>,哪怕标签只有一个也是伪数组
<font color="#e57373">document.getElementsByClassName </font>
只能通过<font color="#f57f17">类名</font>去获取,并且获取到是<font color="#f57f17">多个</font>,返回一个<font color="#f57f17">伪数组</font>,哪怕只有一个标签是这个类也是伪数组
<font color="#f44336">以上三个都比较局限:拿元素的时候只能通过指定的属性去拿 </font>
<font color="#ffff00">document.querySelector </font>
<font color="#00ffff">querySelector</font> 专门用来获取选择器选中<font color="#f57f17">只有一个</font>元素,返回的是<font color="#f57f17">单个</font>元素<font color="#f57f17">dom对象</font>;
<font color="#ffff00">document.querySelectorAll </font>
<font color="#00ffff">querySelectorAll </font>专门用来获取选择器选中有<font color="#f57f17">多个</font>元素,返回是<font color="#f57f17">伪数组</font>;
<font color="#00ffff">querySelector </font>和 <font color="#00ffff">querySelectorAll </font>可以<font color="#f57f17">获取元素</font>,但是他们和上面<font color="#f57f17">不同</font>的是,他们<font color="#f57f17">根据选择器去获取</font>。也就是说只要选择器能选择到,他们就可以获取到,只要选择器写的对就可以获取到;
<font color="#00ffff">操作DOM元素</font>
1.修改元素属性
<font color="#00ffff">修改元素</font><font color="#ffff00">天生属性</font><font color="#00ffff">里面的</font><font color="#ffff00">普通属性</font>
直接修改<font color="#00ffff"> ——></font> <font color="#f57f17">image.</font><font color="#00ffff">src </font><font color="#f57f17">= ". / img / 002 . webp "; </font><font color="#81c784">/</font><font color="#ffff00"> </font><font color="#f57f17"> image.</font><font color="#00ffff">id</font><font color="#f57f17"> = ‘ ’; </font><font color="#4caf50"> / </font><font color="#f57f17"> a.</font><font color="#00ffff">herf</font><font color="#f57f17"> = ' ' ;</font>
<font color="#00ffff">修改元素</font><font color="#ffff00">天生属性</font><font color="#00ffff">里</font><font color="#ffff00">属性名与属性值相同</font><font color="#00ffff">的属性</font>
元素当中的<font color="#f57f17">属性和属性值相同</font>的这种属性,js操作的时候值使用<font color="#e57373">true</font>和<font color="#e57373">false</font><font color="#f57f17"> </font><font color="#00ffff"> ——></font><font color="#f57f17"> </font>inputNode.<font color="#00ffff">checked</font> = <font color="#e57373">true</font><font color="#f57f17"> </font>;
<font color="#00ffff">修改元素</font><font color="#ffff00">天生属性</font><font color="#00ffff">里的</font><font color="#ffff00">特殊属性</font>
class类属性,在js当中<font color="#ffff00">不叫</font><font color="#f57f17">class</font>叫<font color="#f57f17">className </font><font color="#ffffff">修改类名有</font><font color="#f57f17">两种</font><font color="#ffffff">方法</font><font color="#f57f17"></font>
1.通过<font color="#00ffff">className</font>:pNode.<font color="#00ffff">className</font> = 'p2';
2.通过<font color="#00ffff">classList</font>修改:
<font color="#f57f17">classList </font>是所有类名组成的一个<font color="#f57f17">数组</font>
<font color="#ffff00">div</font><font color="#f57f17">.classList</font><font color="#00ffff">.add</font><font color="#f57f17">("box2");</font> // <font color="#ffff00"> DOM元素</font><font color="#f57f17">.classList</font><font color="#00ffff">.add </font><font color="#ffffff">——></font><font color="#00ffff"> </font><font color="#f57f17">添加类名 </font>
<font color="#ffff00">div</font><font color="#f57f17">.classList</font><font color="#00ffff">.remove</font><font color="#f57f17">("box1"); </font> // <font color="#ffff00">DOM元素</font><font color="#f57f17">.classList</font><font color="#00ffff">.remove </font><font color="#ffffff">——> </font><font color="#f57f17">删除类名</font>
<font color="#ffff00">div</font><font color="#f57f17">.classList</font><font color="#00ffff">.toggle</font><font color="#f57f17">("box2"); </font>// <font color="#ffff00">DOM元素</font><font color="#f57f17">.classList</font><font color="#00ffff">.toggle </font><font color="#ffffff">——></font><font color="#00ffff"> </font><font color="#f57f17">切换类名(</font>如果有类名就删除,如果没有类名就添加<font color="#f57f17">)</font>
<font color="#ffff00">div</font><font color="#f57f17">.classList</font><font color="#00ffff">.contains</font><font color="#f57f17">("box2"); </font><font color="#ffffff"> // </font> <font color="#ffff00">DOM元素</font><font color="#f57f17">.classList</font><font color="#00ffff">.contains ——></font><font color="#f57f17"> 查看</font><font color="#00ffff">是否包含</font><font color="#f57f17">某个类名</font>
<font color="#00ffff">修改元素</font><font color="#ffff00">自定义属性</font>
自定义属性,<font color="#f57f17">没办法</font>使用 <font color="#ffff00">点</font> 语法和<font color="#ffff00"> [ ]</font> 语法
对于自定义的属性,只能用下面两个方法去读写
<font color="#f57f17">this.</font><font color="#00ffff">getAttribute</font><font color="#f57f17">('aa') </font><font color="#ffffff">——> </font><font color="#f57f17"> 读取</font>属性的属性值
<font color="#f57f17">this.</font><font color="#00ffff">setAttribute</font><font color="#f57f17">('aa','cc') </font>——> <font color="#f57f17">设置</font>属性的属性值
这两个方法是<font color="#f57f17">通用的</font>,<font color="#f57f17">天生的属性也可以使用</font>,并且类名直接使用class不用改为className
<font color="#f57f17">this.</font><font color="#00ffff">getAttribute</font><font color="#f57f17">('id'); </font>
<font color="#f57f17">this.</font><font color="#00ffff">setAttribute</font><font color="#f57f17">('class', 'p2'); </font>
<font color="#00ffff">总结:</font>
在操作元素属性的时候,<font color="#ffff00">点语法</font><font color="#f57f17">只能操作</font>元素<font color="#ffff00">天生具有的属性</font>,如果是<font color="#ffff00">自定义</font>的属性,通过点语法是无法操作的;<font color="#f57f17">只能通过</font><font color="#ffff00"> </font><font color="#00ffff">setAttribute</font><font color="#f57f17">和</font><font color="#00ffff">getAttribute</font><font color="#f57f17">去操作</font>; <font color="#00ffff">setAttribute</font>和<font color="#00ffff">getAttribute</font>是<font color="#ffff00">通用的方法</font>,无论元素<font color="#f57f17">天生</font>的还是<font color="#f57f17">自定义</font>的属性<font color="#f57f17">都</font>可以操作;
以后常用<font color="#ffff00">天生的属性</font>就用<font color="#ffff00">点语法</font>去操作,<font color="#ffff00">自定义</font>的属性采用<font color="#00ffff">setAttribute</font>和<font color="#00ffff">getAttribute</font>去操作;
2. 修改DOM元素的内容
<font color="#00ffff">innerHTML </font>:获取或设置标签中的<font color="#f57f17">HTML </font>
<font color="#00ffff">innerText</font>: 获取或设置标签中的<font color="#f57f17">文本</font><font color="#e57373">(所有子节点的)</font>
<font color="#ffff00">读</font>
如果获取的元素当中<font color="#f57f17">没有</font>其它的元素
那么这两个都是<font color="#f57f17">直接获取文本</font>(<font color="#00ffff">innerHTML</font>获取的东西<font color="#f57f17">带空白和换行</font>,<font color="#00ffff">innerText</font><font color="#f57f17">不带</font>)
如果内部<font color="#f57f17">有</font>其他标签<font color="#00ffff"></font>
<font color="#00ffff">innerHTML</font><font color="#e57373">文本</font>和<font color="#e57373">标签</font><font color="#f57f17">都</font>会<font color="#ffffff">获取</font>;<font color="#00ffff">innerText</font><font color="#f57f17">只</font>是获取标签内部的所有<font color="#f57f17">文本</font>,<font color="#e57373">标签</font><font color="#f57f17">不会</font>获取。
<font color="#ffff00">写</font>
如果设置的内容当中<font color="#f57f17">没有标签</font>内容
那么这两个都是直接把<font color="#f57f17">标签</font>当中所有的东西替换成文本内容
如果设置的内容当中<font color="#f57f17">有其他标签内容</font>
<font color="#00ffff">innerText</font>:标签是<font color="#f57f17">原样字符串</font><font color="#ffff00">显式</font>在页面上;
<font color="#00ffff">innerHTML</font>:标签在页面上<font color="#ffff00">渲染生效</font>的;
3.修改样式
console.log( <font color="#ffff00"> pNode</font><font color="#f57f17">.style.</font><font color="#00ffff">color</font> )
<font color="#ffff00">pNode</font><font color="#f57f17">.style</font><font color="#00ffff">.color </font>= <font color="#f57f17">"red"</font>;
<font color="#ffff00">元素</font><font color="#f57f17">.style</font><font color="#00ffff"> .样式 </font>只能<font color="#e57373">获取</font>和<font color="#e57373">修改</font><font color="#f57f17">行内样式 </font>
DOM事件
编程套路(思想)
<font color="#ffff00">1.排他思想</font>
<font color="#00ffff">概述:</font>点击(或其他事件)目标节点,先把<font color="#f57f17">所有节点</font>都设置为<font color="#f57f17">统一的</font>样式,然后<font color="#f57f17">单独</font>设置<font color="#f57f17">目标节点</font>的样式
<font color="#00ffff">应用</font>
排他实现小圆点点击切换
<b style=""><font color="#ffffff">BOM</font></b>
BOM的概念
event对象
定时器
元素的位置与大小
初始包含快及滚动条控制
<font color="#ffffff"><b>js高级</b></font>
内存 | 变量 | 数据
对象基础
函数基础
执行上下文、执行上下文栈、预解析、作用域、作用域链(打断点)
闭包
原型链,终极原型链
面对对象(封装,继承,多态)
事件循环机制
<b><font color="#ffffff">ES5扩展</font></b>
严格模式
Object 扩展方法
call、apply 和 bind
<b><font color="#ffffff">ES6</font></b>
let与const
变量的解构赋值
模板字符串
简化对象写法
箭头函数
rest参数
spread扩展运算符
Symbol
迭代器
Set
Map
class(类)
数值扩展
对象扩展
0 条评论
下一页