目录
1、内置对象及内置函数
基本包装类型
boolean类型
String类型
Number类型
Math对象
Date对象
2、扩展库
1.Moment.js
2.lodash
1、内置对象及内置函数
JavaScript中的对象分为3种:自定义对象、内置对象、浏览器对象。
内置对象:js语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能(属性和方法)。
JS中常用的内置对象:Array, Boolean, Date, Math, Number , String, Error, Function, Global, Object, RegExp
内置函数:嵌入到主调函数中的函数称为内置函数,又称内嵌函数。用于提高程序的执行效率。 极大的提升了程序员的效率和程序的阅读。JS内置函数不属于任何对象,在JS语句中任何位置都可以使用这些函数。
基本包装类型
数据的分类分为基本数据类型和引用类型。引用类型有自己内置的方法,也可以自定义其他方法用来操作数据,而基本数据类型不能。按照最新 ES 标准定义,基本数据类型(primitive value)包括 Undefined, Null, Boolean, Number, Symbol, String。为了便于操作基本类型值,ECMAScript提供了3个特殊引用类型(基本包装类型):Boolean, Number, String。基本包装类型和引用类型一样,拥有内置的方法可以对数据进行额外操作。
boolean类型
Boolean 类型没有特定的属性或者方法。一般直接将Boolean当做一个工具方法来使用。
String类型
对象属性
属性 | 描述 |
constructor | 对创建该对象的函数的引用 |
length | 字符串的长度 |
prototype | 允许您向对象添加属性和方法 |
String 也包含对象的通用方法,比如 valueOf()、toLocaleString()和 toString()方法,但这些方法都返回字符串的基本值。
字符方法
方法 | 描述 |
charAt(index) | 返回指定索引位置的字符 |
charCodeAt(index) | 以Unicode编码形式返回指定索引位置的字符 |
字符串操作方法
方法 | 描述 |
concat() | 连接字符串。 |
slice() | 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。 |
substring() | 提取字符串中两个指定的索引号之间的字符。 |
substr() | 从起始索引号提取字符串中指定数目的字符。 |
字符串位置方法
方法 | 描述 |
indexOf(str,n) | 从n开始搜索第一个str,并将搜索的索引值返回 |
lastIndexOf(str,n) | 从n开始搜索的最后一个str,并将搜索的索引值返回 |
大小写转换方法
方法 | 描述 |
toLowerCase() | 把字符串转换为小写。 |
toUpperCase() | 把字符串转换为大写。 |
toLocaleLowerCase() | 把字符串转换为小写。本地化 |
toLocaleUpperCase() | 把字符串转换为大写。本地化 |
字符串的模式匹配方法
方法 | 描述 |
match() | 找到一个或多个正则表达式的匹配。 |
replace() | 替换与正则表达式匹配的子串。 |
search() | 检索与正则表达式相匹配的值。 |
split() | 把字符串分割为字符串数组。 |
用法:
//charAt(index) 返回指定索引位置的字符。index必须
var str = 'hello';
console.log(str.charAt(0)); // h
//charCodeAt(index)以Unicode编码形式返回指定索引位置的字符
var str = 'hello';
console.log(str.charCodeAt(0)); // 104
//substring(start,end) 提取字符串中两个指定的索引号之间的字符。
var str = 'hello';
console.log(str.substring(0, 3)); // hel
console.log(str.substring(0)); // hello
//substr(start,length) 从起始索引号提取字符串中指定数目的字符
var str = 'hello';
console.log(str.substr(0, 3)); // hel
//大小写转换方式
var str = 'hello world';
// 转换为大写
console.log(str.toUpperCase()); //HELLO WORLD
// 转换为小写
console.log(str.toLowerCase()); //hello world
//字符串的模式匹配方法
var str = 'HELLO World';
console.log(str.match('L'));//找到 L,返回 L 否则返回 null
console.log(str.search('L'));//找到 L 的位置,和 indexOf 类似
console.log(str.replace('L', 'Q'));//把 L 替换成 Q
//如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。
console.log(str.split(''));//把字符串分割为字符串数组。
Number类型
内置属性(静态属性,直接调用即可)
属性 | 描述 |
MAX_VALUE | 可表示的最大的数。 |
MIN_VALUE | 可表示的最小的数。 |
NaN | 非数字值。 |
NEGATIVE_INFINITY | 负无穷大,溢出时返回该值。 |
POSITIVE_INFINITY | 正无穷大,溢出时返回该值。 |
prototype | 使您有能力向对象添加属性和方法。 |
内置方法(对象方法)
方法 | 描述 |
toString | 把数字转换为字符串,使用指定的基数。 |
toLocaleString | 把数字转换为字符串,使用本地数字格式顺序。 |
toFixed | 把数字转换为字符串,结果的小数点后有指定位数的数字。 |
toExponential | 把对象的值转换为指数计数法。 |
toPrecision | 方法可在对象的值超出指定位数时将其转换为指数计数法。 |
valueOf | 返回一个 Number 对象的基本数字值。 |
用法案例:
//toString 把数字转换为字符串,使用指定的基数。
var num = 123;
console.log(num.toString()); //123
//toLocaleString 把数字转换为字符串,使用本地数字格式顺序。
var num = 123;
console.log(num.toLocaleString()); //123
//toFixed 把数字转换为字符串,结果的小数点后有指定位数的数字。
var num = 123;
console.log(num.toFixed(2)); // 123.00
//toExponential 把对象的值转换为指数计数法。科学计数法
var num = 123;
console.log(num.toExponential()); // 1.23e+2
//toPrecision 方法可在对象的值超出指定位数时将其转换为指数计数法。
var num = 123;
console.log(num.toPrecision(2)); // 1.2e+2
//valueOf 返回一个 Number 对象的基本数字值。
var num = 123;
console.log(num.valueOf()); // 123 number
Math对象
Math对象主要用于解决数学问题
Math对象区别于其他对象,没有构造函数 Math(),像 Math.sin() 这样的函数只是函数,不是某个对象的方法。通过把 Math 作为对象使用就可以调用其所有属性和方法。
math对象的常用方法
//Math.min() 求一组数中的最小值
console.log(Math.min(2,1,3,4,4)); //1
//Math.max() 求一组数中的最大值
console.log(Math.max(2,1,3,4,4)); //4
//将小数值舍入为整数的几个方法
//Math.ceil() 向上舍入
console.log(Math.ceil(2.1)); //3
//Math.floor() 向下舍入
console.log(Math.floor(2.7)); //2
//Math.round() 四舍五入
console.log(Math.round(2.7)); //3
console.log(Math.round(2.1)); //2
//Math.random() 返回大于0小于1的一个随机数 [0,1)
console.log(Math.random()); // 随机数
Date对象
Date 对象用于处理日期和时间。是JS提供的内置构造函数。
创建Date对象
var myDate = new Date();
console.log(myDate); //2021-08-30T14:27:30.481Z
//在node环境和浏览器环境输出不同
new Date()
可以获取到一个你传递进去的时间
var time = new Date('2020-06-06 06:06:06')
console.log(time)
// node环境下 2020-06-05T22:06:06.000Z
// 浏览器环境下 Sat Jun 06 2020 06:06:06 GMT+0800 (中国标准时间)
// 第一个参数表示年
// 第二个参数表示月份,月份从0开始计数,0表示1月,11表示12月
// 第三个参数表示该月份的第几天,1~31
// 第四个参数表示当天的几点,0~23
// 第五个参数表示的是该小时的多少分钟,0~59
// 第六个参数表示该分钟的多少秒,0~59
var time = new Date(2020, 00, 1, 10, 10, 10);
console.log(time);
// node环境下 2020-01-01T02:10:10.000Z
// 浏览器环境下 Wed Jan 01 2020 10:10:10 GMT+0800 (中国标准时间)
常用对象方法
var time = new Date();
// 获取当前时间,使用toString()进行转换
console.log(time.toString()); //Mon Aug 30 2021 22:52:12 GMT+0800 (GMT+08:00)
// 获取当前时间 本地化字符串
console.log(time.toLocaleString()); // 2021-8-30 22:52:12
// getFullYear() 得到指定字符串中的哪一年
console.log(time.getFullYear()) // 2021
// getMonth() 得到指定字符串中的哪个月 注意月份是从0开始数的0->1月,1->2月,依此类推
console.log(time.getMonth()) // 7 实际是8月
// getDate() 得到指定字符串中的哪一天
console.log(time.getDate()) // 30
// getHours() 得到指定字符串中的哪小时
console.log(time.getHours()) // 22
// getMinutes() 得到指定字符串中的哪分钟
console.log(time.getMinutes()) // 45
// getSeconds() 得到指定字符串中的哪秒钟
console.log(time.getSeconds()) // 23
// getDay() 得到指定字符串当前日期是周几(周日是0,周六是6)
console.log(time.getDay()) // 1
// getTime() 得到执行时间到 格林威治时间的毫秒数 时间戳
console.log(time.getTime()) // 1630334723399
2、扩展库
1.Moment.js
JavaScript日期处理类库
//Node.js中使用
// 在当前目录下使用node安装moment库
npm install moment --save
// 模块化导入moment
var moment = require('moment');
// 设置本地语言为中文
require('moment/locale/zh-cn')
moment.locale('zh-cn');
// 根据对应的格式输出当前时间
console.log(moment().format('MMMM Do YYYY, h:mm:ss a'));
//八月 30日 2021, 11:07:46 晚上
// 浏览器中使用
// 可以下载js文件,也可使用对应的cdn文件,bootcdn
<script src="moment.js"></script>
<script>
moment().format();
</script>
时间戳转换
console.log(moment(parseInt(1630334723399)).format('YYYY-MM-DD HH:mm:ss'));// 2021-08-30 22:45:23
有关format的格式参考 http://momentjs.cn/docs/#/displaying/format/
其他方法见Moment.js 中文网
2.lodash
Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。
(1)_.cloneDeep
可用于解决浅拷贝问题
var _ = require('lodash');
var obj = {
name:'zhangsan',
age: 18
}
var obj2 = _.cloneDeep(obj);
obj2.age = 20;
console.log(obj); // { name: 'zhangsan', age: 18 }
console.log(obj2); // { name: 'zhangsan', age: 20 }
(2)_.chunk(array, size)
将数组拆分成多个size长度的区块,并将这些区块组成一个新数组。如果array无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。
参数:array:需要分割的数组 size:每个数组区块的长度
返回值:返回一个包含拆分区块的新数组
示例
_.chunk([1,2,3,4,5,6,7,8,9], 2);
// => [[1,2], [3,4],[5,6],[7,8],[9]]
_.chunk([1,2,3,4,5,6,7,8,9], 3);
// => [[1,2,3], [4,5,6],[7,8,9]]
(3)_.compact(array)
创建一个新数组,包含原数组中所有的非假值元素。false, null, 0, "", undefined, 和 NaN 都是被认为是“假值”。
参数:待处理的数组 返回值:返回一个不含非假值的新数组
示例
_.compact([0, 1, false, 2, '', 3]);
// => [1, 2, 3]
(4) _.drop(array, [n=1])
创建一个切片数组,去除array前面的n个元素。
参数: array: 待处理的数组。 n: 要去除的元素个数。默认为1
返回值:返回array剩余切片。
示例
_.drop([1, 2, 3]);
// => [2, 3]
_.drop([1, 2, 3], 2);
// => [3]
_.drop([1, 2, 3], 5);
// => []
_.drop([1, 2, 3], 0);
// => [1, 2, 3]
(5)_.indexOf(array, value, [fromIndex=0])
返回首次 value 在数组array中被找到的索引值, 如果 fromIndex 为负值,将从数组array尾端索引进行匹配。
参数 :array: 需要查找的数组
value: 需要查找的值。
fromIndex: 开始查询的位置。
返回值: 返回目标元素在数组中的索引位置, 没有找到为返回-1。
示例
_.indexOf([1, 2, 1, 2], 2);
// => 1
// Search from the `fromIndex`.
_.indexOf([1, 2, 1, 2], 2, 2);
// => 3
(6)_.uniq(array)
创建一个去重后的array数组副本。只有第一次出现的元素才会被保留。
参数:array: 要检查的数组 返回值: 返回去重后的新数组。
示例
_.uniq([2, 1, 2]);
// => [2, 1]