JavaScript 常用标准库

49 阅读7分钟

包装类

如果尝试着把原始类型(number、string、boolean)当做对象使用,JS会自动将其转换为对应包装类的实例

在 JavaScript 中,基本数据类型(如字符串、数字、布尔值等)没有自己的方法或属性,但是可以使用它们对应的包装类来实现这些操作。包装类是指一组内置的对象构造函数,可以通过这些构造函数创建一个对象来实现对基本数据类型的操作。

比如,使用 String 包装类可以将基本类型的字符串转化为对象类型,从而使用一些字符串相关的方法,如 toUpperCase()substring() 等。同样,NumberBoolean 包装类也可以对基本类型的数字和布尔值进行类似的操作。这些包装类的原型上都有一些方法,可以通过实例化包装类的对象来调用这些方法。

需要注意的是,在使用包装类时,如果我们在基本类型的值上使用一些方法,例如 "hello".toUpperCase(),实际上是创建了一个 String 对象,然后在这个对象上调用方法,执行完方法后对象就被销毁了。这种过程称为“自动包装(autoboxing)”或“装箱(boxing)”。因此,当需要使用基本类型的值时,建议直接使用基本类型,而非使用包装类。

api 分类

实例方法是指可以通过类的实例来调用的方法,

静态方法则是通过类本身来调用的方法。

Number

developer.mozilla.org/zh-CN/docs/…

API含义备注
Number.NaN表示一个数学上并不存在的数字可以直接书写为 NaN
Number.isNaN()判断传入的值是否是NaN可以直接书写为 isNaN
Number.isInteger()判断传入的值是否是整数
Number.parseInt()把传入的值转换为整数形式返回可以直接书写为 parseInt()
Number.parseFloat()把传入的值转换为小数形式返回可以直接书写为 parseFloat()
Number.prototype.toFixed()将当前数字保留指定位数的小数返回传入小数位数
Number.prototype.toString()将当前数字转换为字符串返回传入进制2-36

技巧:可以使用tostring(36)生成包含数字和字母的随机数

Math.random().toString(36).slice(2)

String

developer.mozilla.org/zh-CN/docs/…

API含义备注
String.fromCharCode()根据编码值得到一个字符传入一个或多个编码值
String.prototype.length得到字符串的长度
String.prototype.charCodeAt()得到某个下标的字符编码传入下标
String.prototype.includes()判断当前字符串是否包含某个子串传入子串
String.prototype.indexOf()判断某个字符串在当前字符串中的第一个下标位置如果没有,返回-1
String.prototype.lastIndexOf()判断某个字符串在当前字符串中的最后一个下标位置如果没有,返回-1
String.prototype.endsWith()判断某个字符串是否以指定的字符串结束传入一个字符串
String.prototype.startsWith()判断某个字符串是否以指定的字符串开始传入一个字符串
String.prototype.padStart()将当前的字符串按照指定的字符在字符串开始位置填充到指定的位数,返回填充后的字符串传入位数、填充字符
String.prototype.padEnd()将当前的字符串按照指定的字符在字符串结束位置填充到指定的位数,返回填充后的字符串传入位数、填充字符
String.prototype.split()把当前字符串按照某个字符串分割成一个字符串数组返回传入分隔符
String.prototype.substring()返回一个字符串在开始索引到结束索引之间的一个子集, 或从开始索引直到字符串的末尾的一个子集传入开始字符、结束字符
String.prototype.trim()从字符串的两端删除空白字符,返回新字符串无参数
String.prototype.trimStart()从字符串的开头删除空白字符,返回新字符串无参数
String.prototype.trimEnd()从字符串的末端删除空白字符,返回新字符串无参数
String.prototype.toUpperCase()将调用该方法的字符串转为大写形式并返回无参数
String.prototype.toLowerCase()将调用该方法的字符串转为小写形式并返回无参数
String.prototype.replace()替换字符串中的第一个对应字符为新字符
String.prototype.replaceAll()替换字符串中的所有对应字符为新字符

数学

developer.mozilla.org/zh-CN/docs/…

API含义备注
Math.PI得到圆周率π
Math.abs()求某个数绝对值传入一个数
Math.ceil()向上取整传入一个数
Math.floor()向下取整传入一个数
Math.max()求一个数列中的最大值把数列依次传入
Math.min()求一个数列中的最小值把数列依次传入
Math.random()得到一个0-1之间的随机小数无参;无法取到1
Math.round()返回四舍五入的结果传入一个数
查找数组最大数Math.max.apply(null,arr) 或者 Math.max(...arr)

生成指定范围随机数

function getRandom(min, max) {
	let result = Math.floor(Math.random()*(max-min+1)+min)
	console.log(result);
}

日期

时间基础知识

单位

单位名称换算
hour小时1 day = 24 hours
minute分钟1 hour = 60 minutes
second1 minute = 60 seconds
millisecond (ms)毫秒1 second = 1000 ms
nanosecond (ns)纳秒1 ms = 1000 ns

Unix 时间戳

Unix 时间戳(Unix Timestamp)是Unix系统最早提出的概念

它将UTC时间1970年1月1日凌晨作为起始时间,到指定时间经过的秒数(毫秒数)

程序中的时间处理

程序对时间的计算、存储务必使用UTC时间,或者时间戳

在和用户交互时,将UTC时间或时间戳转换为更加友好的文本

时间戳相同说明两者是同一时刻的

构造函数:

new Date(); // 得到一个当前日期对象
new Date(value); // 根据时间戳得到一个日期对象
new Date(dateString); // 根据一个标准日期字符串得到一个日期对象
new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]); // 根据年、月、日、小时、分钟、秒、毫秒得到一个日期对象
API含义备注
Date.now()得到当前时间戳无参
Date.prototype.getFullYear()得到年无参;本地时间;
Date.prototype.getMonth()得到月无参;本地时间;范围0-11
Date.prototype.getDate()得到日无参;本地时间;
Date.prototype.getHours()得到小时无参;本地时间;
Date.prototype.getMinutes()得到分钟无参;本地时间;
Date.prototype.getSeconds()得到秒无参;本地时间;
Date.prototype.getMilliseconds()得到毫秒无参;本地时间;
Date.prototype.toLocaleString()得到日期本地的表示方式

let date = new Date()

console.log(date.getTime())

对象

developer.mozilla.org/zh-CN/docs/…

API含义备注
Object.assign()将多个对象的属性混合到一起后面覆盖前面
Object.getPrototypeOf()获取一个对象的隐式原型
Object.setPrototypeOf()设置一个对象的隐式原型
Object.create()创建一个新对象,同时设置新对象的隐式原型

技巧: Object.asign({},obj,obj1,obj) 不会更改源对象,返回一个新的对象

数组

developer.mozilla.org/zh-CN/docs/…

API含义备注
Array.prototype.concat()把多个数组拼接成一个
Array.prototype.includes()判断数组中是否包含某个值
Array.prototype.indexOf()得到数组中某个值的第一个下标若不存在则返回-1
Array.prototype.lastIndexOf()得到数组中某个值的最后一个下标若不存在则返回-1
Array.prototype.join()把数组中每一项使用某个字符连接起来,形成一个字符串返回
Array.prototype.push()向数组的末尾添加一项
Array.prototype.unshift()向数组的开头添加一项
Array.prototype.pop()删除数组最后一项返回被删除的值
Array.prototype.shift()删除数组第一项返回被删除的值
Array.prototype.splice()删除、修改、插入任何位置的值
Array.prototype.reverse()将数组中的元素顺序颠倒
Array.prototype.sort()对数组进行排序传入比较函数:0-位置不变,<0-前者在前,>0-前者在后
Array.prototype.slice()对数组进行切割

排序sort

sort 函数要传入一个回调函数

image.png

克隆对象

使用slice伪数组转化成真数组,会截取第0个到最后,返回一个新的数组副本,

image.png

函数

developer.mozilla.org/zh-CN/docs/…

API含义备注
Function.prototype.apply()执行函数,绑定this参数列表以数组的形式传递
Function.prototype.call()执行函数,绑定this参数列表依次传递