【24】JavaScript(值类型和引用类型、内置构造函数(内置对象))

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 的指向,但是不能直接调用函数。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容