JS内置对象与扩展库

目录

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]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值