-
JS包括:ECMAscript DOM BOM
-
ECMAScript包括:变量、数据、运算符、条件分支语句、循环语句、函数、数组、对象...
-
JavScript的对象包括:自定义对象、内置对象、浏览器对象
-
ECMAScript的对象包括:自定义对象、内置对象
-
-
参考手册推荐W3C /
一、Math对象
-
Math对象它具有数学常数和函数的属性和方法,我们可以直接进行使用
-
根据数学相关的运算来找Math中的成员(求绝对值,取整)
-
一些常见属性/方法
-
传入的参数会自己进行隐式转换为数字
-
传入空视为NaN
-
-
Math.PI: 是Math的静态属性(Math不是构造函数)
-
Math.random(): 返回0-1的随机数(包括0不包括1)
-
Math.ceil / floor: 向上/向下取整
-
Math.round: 四舍五入
-
Math.abs: 返回绝对值
-
Math.max / Math.min: 传入多个数字,返回最大/最小的一个数,不能直接把数组放进去,可以使用ES6的结构赋值...arr
-
Math.sin / Math.cos: 三角函数
-
Math.pow / Math.sqrt: 求一个数的几次方 / 一个数的平方根
-
sqrt不能传入负数
-
pow可以用几分之一次方代表开方
-
案例
-
求一个自定义范围的随机数
function getRandom (min, max) {
var min = Math.ceil(min)
var max = Math.max(max)
return Math.floor(Math.random() * (max - min + 1) + min)
}
二、数组Array
2.1 数组创建方式
-
字面量方式
var arr = [1, 2, 3]
-
newArray()构造函数方式
var arr = new Array(1, 2, 3)
2.2 检测数组的方法
-
arr instanceof Array
-
这个必须要是构造函数生成或者是复杂类型的
-
因为平时字面量创建string使用instanceof String返回false,而new String()返回的是true
-
-
每一个数组都是对象,所以instanceof Object也为true
扩展
-
typeof一个数组返回的是‘object’
-
typeof一个函数,返回的是‘function’
-
一个函数instanceof Function/Object 返回的是true
2.3 数组的一些常用方法
-
使用数组的方法的时候其实是因为Array这个构造函数中的原型链事先封装了很多方法在里面(Array.prototype)
(1)首尾数据操作
-
push():在数组末尾添加一个或多个元素,并返回操作后的length
-
pop():删除数组最后一项,返回删除项
-
shift():删除数组第一项,返回删除项
-
unshift():在数组开头添加一个或多个元素,返回数组的新length
-
添加方法多个参数用逗号分隔,可以是任意数据类型
-
删除方法只删除一项,返回是删除项
-
案例
-
将第一项移动到最后一项
-
var arr = [1, 2, 3]
arr.push(arr.shift())
// [2, 3, 1]
(2)合并和拆分方法
-
concat():合并
-
将两个数组合并成一个新的数组并返回,原数组不受影响,参数位置可以实一个数组字面量、数字变量、零散的值
-
会识别出数组,并不会将数组视为一个值
-
即arr1.concat(arr2) 与 arr1.concat(...arr2)结果相同
-
-
slice(start, end):拆分
-
从当前数组中姐去一个新的数组,不影响原来的数组,返回一个新数组,包含从start到end(不包含end)的元素
-
参数为负数的时候,最后一个为-1
-
参数两个且为正
-
var arr = [1, 2, 3, 4, 5, 6, 7, 8]
var arr1 = arr.slice(3, 7)
arr1 // [4, 5, 6, 7]
-
-
参数两个且为负
-
start小过end:正常执行
-
start >= end;返回一个空数组
-
-
参数只有一个
-
从start开始到后面所有数
-
-
(3)删除、插入、替换:
-
splice(index, howmany, element1, element2, ...)
-
用于插入、删除或者替换数组的元素
-
返回值为删除的部分组成的数组
-
-
index:删除元素的开始位置
-
howmany:删除元素的个数,可以是0
-
element,element2:要替换的新数据
-
一个参数
-
删除从这个下标开始之后的所有元素
-
可以为负数
-
如果只传入一个数组
-
会将其隐式转换为数字类型
-
-
输入NaN视为0,即删除所有数组
-
-
两个参数
-
删除从第一个参数的下标开始之后到第二个参数(不包括第二个参数)的所有元素
-
-
三个或以上
-
执行完前面两个参数之后在第一个参数的下标处插入元素,任意数据类型,会把数组识别为数组
-
(4)位置方法
-
indexOf():查找数据在数组中最先出现的下标
-
lastIndexOf():查找数据在数组中最后一次出现的下标
-
如果没有找到返回-1
-
输入的参数为元素的值
(5)倒序与排序
-
reverse():倒序
-
将数组元素顺序反过来,返回反过来的数组
-
原数组也会发生改变
-
-
sort():排序
-
根据字符编码顺序,从小到大排序
-
不推荐不添加参数不然的话
-
var arr = [1, 2, 3, 4, 20, 30]
arr.sort
arr // [1, 2, 20, 3, 30, 4]
-
-
参数添加一个比较函数
-
function (a, b) {}
-
会默认添加两个参数a,b代表正在进行比较的数,a代表前面的数,b代表后面的数
-
判断函数的返回值来决定a跟b的位置
-
返回值1
-
a与b换位
-
-
返回值-1或0
-
a与b保持不变
-
-
-
一般加入
-
arr.sort(function(a, b) {
return a - b
// 代表a如果比b小,得出来的就是负数,然后会不变
// 所以这是一个升序排序
}) -
-
-
(6)转字符串
-
join():通过参数作为连字符将数组中每一项用连字符连成一个完整的字符串
-
默认连字符是
,
-
若想无连字符则参数为
''
-
(7)清空数组
-
①
arr = []
(推荐) -
②
arr.length = 0
-
③
arr.splice(0, arr.length)
三、字符串String
-
一般基本类型的数据:没有属性的方法
-
对象数据类型:有属性和方法
-
但是字符串可以调用一些属性和方法
-
比如slice():与数组相似
-
3.1 基本包装类型
-
基本类型的数据在进行一些特殊操作时,会暂时被包装成一个对象,结束后再被销毁
-
可以理解为调用方法的时候,会创建一个new String()然后用该实例的方法调用完之后再销毁
-
-
如果用new String()创建的会用这个包装类型来创建
-
这时候使用
instanceof String
和instanceof Object
为true
-
3.2 字符串的特点
-
字符串是不可变的
-
由于字符串不可变,在大量拼接字符串的时候会有效率问题
-
在字符串赋值的时候,不会在原有的基础上改变字符串,而是开辟一个新的内存控件进行存储,js的垃圾清理机制运行之前,就会都在内存中,进而卡顿
-
3.3 字符串的属性和方法
-
字符串所有的方法都不会修改字符串本身,操作完成会返回一个新的字符串
(1)字符串属性
-
str.length:返回一个字符串中所有的字符总数
-
空格也算
-
var str = '1 2 3'
str.length // 5
-
(2)字符串方法
-
charAt():可以放回指定位置的字符
-
var str = '1 2 3'
str.charAt(2) // 2
-
-
indexOf():返回某个指定的字符串值在字符串中首次出现的位置(跟数组的类似)
-
没有找到返回-1
-
-
concat():连接两个或多个字符串(跟数组方法类似)
-
生成一个新字符串,原字符串不会发生改变
-
可以使用+来连接
-
-
split():把一个字符串分割成字符串数组
-
参数是分隔符,利用分割符将字符串分隔成多个部分,每一个部分为组数的一个元素
-
参数如果为
''
则拆分字符串的每一项 -
可以利用这个来操作字符串避免字符串的大量拼接造成性能不好的影响
-
var str = '123123123'
var arr = str.split('')
arr.push() // 对数组进行增加/删除元素操作
str = arr.join('')
-
-
toLowerCase():把字符串转换为小写
-
toUpperCase():把字符串转换为大写
-
都是生成新字符串,原字符串不会发生任何改变
-
-
slice():提取字符串的某个部分,并以新的字符串返回被提取的部分(跟数组的使用一样)
-
slice(start, end)
-
参数隐式转换为数字类型,NaN当成0
-
-
从start下标所在的位置到end所在的位置(不包括end)截取的字符串
-
参数可以是负数
-
没有截取到则返回一个空字符串
''
-
-
substr():截取字符串某个下标开始,到指定数目的字符串
-
substr(start, howmany)
-
第一个参数可以为负数,超出总字符数按0
-
第二个参数必须为正数,超出总字符数,取start之后的所有字符
-
-
-
substring():提取字符串介于指定下标之间的字符
-
substring(start, end)
-
参数只能为正数,不能为负数
-
会自动比较两个参数的大小,在字符串从小的截取到大的
-
-