包装类
如果尝试着把原始类型(number、string、boolean)当做对象使用,JS会自动将其转换为对应包装类的实例
在 JavaScript 中,基本数据类型(如字符串、数字、布尔值等)没有自己的方法或属性,但是可以使用它们对应的包装类来实现这些操作。包装类是指一组内置的对象构造函数,可以通过这些构造函数创建一个对象来实现对基本数据类型的操作。
比如,使用 String
包装类可以将基本类型的字符串转化为对象类型,从而使用一些字符串相关的方法,如 toUpperCase()
, substring()
等。同样,Number
和 Boolean
包装类也可以对基本类型的数字和布尔值进行类似的操作。这些包装类的原型上都有一些方法,可以通过实例化包装类的对象来调用这些方法。
需要注意的是,在使用包装类时,如果我们在基本类型的值上使用一些方法,例如 "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 |
second | 秒 | 1 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 函数要传入一个回调函数
克隆对象
使用slice伪数组转化成真数组,会截取第0个到最后,返回一个新的数组副本,
函数
developer.mozilla.org/zh-CN/docs/…
API | 含义 | 备注 |
---|---|---|
Function.prototype.apply() | 执行函数,绑定this | 参数列表以数组的形式传递 |
Function.prototype.call() | 执行函数,绑定this | 参数列表依次传递 |