1 值类型和引用类型
1.1 概念
值类型:原始类型的数据也是值类型,传值方式是值传递。
引用类型: 对象类型的数据也是引用类型,传值方式是引用。
1.2 存储方式
值类型: 存储在栈结构中, 赋值的时候传递的就是数据本身。
引用类型: 数据本身存储在堆结构中,数据的地址存在栈结构中, 赋值的时候传递的是地址。
1.3 不可变和可变
不可变类型: 即值类型或者原始类型,数据结构简单只能作为一个整体存在,无法改变数据中的一部分。
可变类型: 即引用类型或者对象类型,由多个属性组成,可以修改其中的某个属性。
2 内置构造函数(内置对象)
在线文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects
2.1 Boolean
① 创建一个 Boolean 实例
// 直接量方式创建布尔类型的数据
true;
false;
// 使用 Boolean 构造函数创建布尔类型的数据
new Boolean();
// 使用 Boolean 函数创建布尔类型的数据
Boolean();
2.2 Number
① 实例的属性和方法
toFixed(n) 保留指定位数的小数,不写参数则取整 (四舍五入规则)
toString(n) 把数字转为字符串,参数指定多少进制 (2~36进制)
② 构造函数本身的属性和方法
Number.MAX_VALUE JS中能表示的最大的数字
Number.MIN_VALUE JS中能表示的最小的正数
2.3 String
① 实例的属性和方法
length 字符串的长度(字符个数)
charAt(index) 返回指定索引(index)对应的字符
indexOf(value) 返回value在字符串中第一次出现的位置(索引),如果字符串中不存在value则返回 -1
lastIndexOf(value) 返回value在字符串中最后一次出现的位置(索引),如果字符串中不存在value则返回 -1
slice(start [,end]) 截取字符串,指定起始索引和结束索引(结果不包括结束索引的字符), 如果不指定结束索引则一 直截取到最后
substring() 同 slice
substr(start [,len]) 截取字符串,指定起始索引和截取长度,不指定截取长度则截取到最后
split([sep]) 把字符串分割为数组,指定sep为分割符。不指定分割符,得到只有一个元素的数组
toUpperCase() 把字符串所有字符转为大写
toLowerCase() 把字符串所有字符转为小写
charCodeAt(index) 返回指定索引对应字符串的 unicode 编码
② 构造函数本身的属性和方法
String.fromCharCode(编码) 返回编码对应的字符
2.4 Date
① 创建一个 Date 实例
var today = new Date();
var birthday = new Date('December 17, 1995 03:24:00');
var birthday = new Date('1995-12-17T03:24:00');
var birthday = new Date(1995, 11, 17, 3, 24, 0); //月份值的范围是0~11
② 实例的属性和方法
getFullYear() 年
getMonth() 月,取值范围0~11
getDate() 日
getDay() 星期几
getHours() 时
getMinutes() 分
getSeconds() 秒
getMilliseconds() 毫秒
getUTC... 获取标准时区的年月日时分秒(UTC:Universal Time Coordinated协调世界时)
getTime() 获取时间戳 (距离1970-1-1 0:0:0 的毫秒数)
set... 设置年月日时分秒
setUTC...
setTime()
③ Date 构造函数本身的属性和方法
Date.now() 返回此时此刻的时间戳
Date.UTC(年, 月, 日, 时, 分, 秒) 返回指定日期时间的时间戳
2.5 Math
注:Math不是构造函数,是一个对象,它的构造函数是 Object。
Math.PI 取圆周率
Math.abs() 取绝对值
Math.sqrt() 取平方根
Math.pow() 求次方
Math.max() 取所有参数中最大的
Math.min() 取所有参数中最小的
Math.floor() 舍一取整
Math.ceil() 进一取整
Math.round() 四舍五入取整
Math.random() 取随机数(0~1,不含1)
注:如何取整数随机数:
//随机取 0 ~ 9 之间的整数(含9)
Math.floor(Math.random() * 10);
//随机取 0 ~ 13 之间的整数(含13)
Math.floor(Math.random() * 14);
//随机取 5 ~ 16 之间的整数(含13): 先随机取 0 ~ 11,再 + 5
Math.floor(Math.random() * 12) + 5;
2.6 Array
① 访问方法
concat(arr1, arr2, ...) 合并多个数组
join('连接符号') 将数组元素合并成字符串
slice(start,[end]) 截取数组中的几个元素组成新的数组
indexOf() 返回指定元素在数组中第一次出现的位置,不存在返回-1。 ES5
lastIndexOf() 返回指定元素在数组中最后一次出现的位置,不存在返回-1。 ES5
forEach(fuction(item, index, array){}) 遍历数组,代替for循环,回调函数作为参数,没有返回值
filter(fuction(item, index, array){
return true/false;
}) 过滤数组,回调函数作为参数,返回由满足条件的元素组成的新数组。(某一元素满足条件时回调函数返回true,filter则返回该元素;若回调函数返回false,filter则不返回该元素,如此返回的元素构成一个新的数组)
map(fuction(item, index, array){
return ...;
}) 回调函数作为参数,返回与原数组长度相同的新数组,新数组元素取决于回调函数的返回值。用于提取或修改数组中某一部分数据。
every(fuction(item, index, array){
return true/false;
}) 回调函数作为参数,返回布尔值,每个回调函数都返回true,最终结果才返回true,如果有回调函数返回false则结束并返回false,不再继续回调。
some(fuction(item, index, array){
return true/false;
}) 回调函数作为参数,返回布尔值,只要有一个回调函数返回true,最终结果返回 true
reduce(fuction(prevRes, item, index, array){
return ...;
}, 参数) 回调函数作为参数,把最后一次回调的返回值作为reduce的返回值,每个回调的第一个参数是上一次回调的返回值。(如果reduce有第二个参数,则作为第一次回调的prevRes参数;如果reduce没有第二个参数,则从第1个数组元素开始遍历并调用函数,第0个数组元素作为第1个数组元素调用的回调函数的prevRes参数值。)
reduceRight(fuction(prevRes, item, index, array){
return ...;
}, 参数) 相比reduce从右向左遍历
② 修改器方法
push() 在数组后面添加一个或多个元素,返回添加了元素之后数组的长度
unshift() 在数组前面添加一个或多个元素,返回添加了元素之后数组的长度
pop() 删除最后一个元素,返回被删除的元素
shift() 删除第一个元素,返回被删除的元素
splice() 替换元素,返回被删除元素组成的数组
reverse() 翻转数组
sort(fuction(next,prev){
return next - prec;
}) 数组排序,回调函数作为参数,若sort不写参数默认从最左边位数开始从小到大排序。若next > prec,回调函数return正数,sort返回从小到大排序的数组;若next < prec,回调函数return负数,sort返回从大到小排序的数组;
注:数组的方法中用回调函数作为参数,每个元素对应一个回调函数,每个回调函数都有一个自己的作用域。
2.7 fuction
Function 实例的属性和方法:
call(this的指向, 参数1, 参数2, ...) 调用函数并指定函数内this的值
apply(this的指向, [参数1, 参数2, ...]) 把函数调用并指定函数内this的值, 第二个参数是数组,数组的元素作为函数的参数
bind(this的指向, 参数1, 参数2, ...) 不能直接调用函数,需赋给一个变量再调用。返回值为一个改变了this执行的新函数。
注:call()和apply()都可以改变函数中 this 的指向,只是参数形式不同。bind()也可以改变 函数中的 this 的指向,但是不能直接调用函数。