目录
JS内置对象解析
JavaScript中有一系列内置对象,这些对象为开发者提供了强大的功能和工具,使得在应用程序中能够更轻松地处理字符串、数字、数组、函数等。以下列举一些内置对象,以及它们的主要功能:
- String(字符串对象):用于处理文本数据,提供了各种字符串操作方法。
- Boolean(布尔对象):表示逻辑上的 true 或 false 值,通常用于条件判断。
- Number(数字对象):处理数值,提供了数值的常用操作和方法。
- Array(数组对象):用于存储和操作有序的数据集合,提供了丰富的数组操作方法。
- Object(对象对象):JavaScript中的基础对象,用于存储键值对的集合。
- Function(函数对象):用于定义和调用函数,函数是 JavaScript 中的基本构建块。
- Math(数学对象):提供了数学相关的操作和常数,例如三角函数、对数函数等。
- Date(日期对象):用于处理日期和时间,提供了获取当前时间、设置日期等功能。
- RegExp(正则表达式对象):用于处理字符串的模式匹配,支持强大的文本搜索和替换功能。
这些内置对象构成了 JavaScript 编程语言的核心,并为开发者提供了丰富的工具和方法来处理各种编程任务。合理利用这些对象,能够提高代码的可读性和维护性,同时加速开发过程。
常见内置对象
Math对象
常用方法
成员 | 功能 |
---|---|
PI | 获取圆周率,结果为3.141592653589793 |
abs() | 获取x的绝对值,可传入普通数值或者是字符串表示的数值 |
max() | 获取所有参数中的最大值 |
min() | 获取所有参数中的最小值 |
pow(base,exponent) | 获取基数(base)的指数(exponent)次幂 |
sqrt(x) | 获取x的平方根 |
ceil(x) | 获取大于或等于x的最小整数,即向上取整 |
floor(x) | 获取小于或等于x的最大整数,即向下取整 |
round(x) | 获取x的四舍五入之后的整数值 |
random() | 获取随机生成的一个实数,它在[0,1)范围内 |
代码列举
// 获取圆周率
const piValue = Math.PI;
console.log(`圆周率: ${piValue}`);
// 获取绝对值
const absoluteValue = Math.abs(-5);
console.log(`绝对值: ${absoluteValue}`);
// 结果:5
// 获取最大值
const maxValue = Math.max(10, 20, 30);
console.log(`最大值: ${maxValue}`);
// 结果: 30
// 获取最小值
const minValue = Math.min(5, 15, 25);
console.log(`最小值: ${minValue}`);
// 结果: 5
// 获取指数幂
const powerResult = Math.pow(2, 3); // 2的3次幂
console.log(`2的3次幂: ${powerResult}`);
// 结果: 8
// 获取平方根
const squareRoot = Math.sqrt(16);
console.log(`16的平方根: ${squareRoot}`);
// 结果: 4
// 向上取整
const ceilValue = Math.ceil(3.14);
console.log(`向上取整: ${ceilValue}`);
// 结果: 4
// 向下取整
const floorValue = Math.floor(3.9);
console.log(`向下取整: ${floorValue}`);
// 结果: 3
// 四舍五入
const roundValue = Math.round(4.5);
console.log(`四舍五入: ${roundValue}`);
// 结果: 5
// 获取随机数
const randomValue = Math.random();
console.log(`随机数: ${randomValue}`);
// 结果: 随机生成的在[0, 1)范围内的实数
日期对象
常用get方法
方法 | 作用 |
---|---|
getFullYear() | 获取表示年份的四位数字,如2023 |
getMonth() | 获取月份,范围0~11(0表示一月,1表示二月,依次类推) |
getDate() | 获取月份中的某一天,范围1~31 |
getDay() | 获取星期,范围0~6(0表示星期日,1表示星期一,依次类推) |
getHours() | 获取小时数,范围0-23 |
getMinutes() | 获取分钟数,范围0-59 |
getSeconds() | 获取秒数,范围0-59 |
getMiliseseconds() | 获取毫秒数,范围0-999 |
getTime() | 获取通过从1970-01-01 00:00:00计时的毫秒数 |
常用set方法
方法 | 作用 |
---|---|
setFullYear(value) | 设置年份 |
setMonth(value) | 设置月份 |
setDate(value) | 设置月份中的某一天 |
setHours(value) | 设置小时数 |
setMinutes(value) | 设置分钟数 |
setSeconds(value) | 设置秒数 |
setMiliseconds(value) | 设置毫秒数 |
setTime(value) | 通过从1970-01-01 00:00:00计时的毫秒数来设置时间 |
代码列举
// 创建一个Date对象,表示当前时间
const currentDate = new Date();
// 获取年份
const year = currentDate.getFullYear();
console.log(`当前年份: ${year}`); // 当前年份: 2023
// 获取月份
const month = currentDate.getMonth();
console.log(`当前月份: ${month + 1}`); // 当前月份: 12(假设当前是12月,注意月份范围是0~11,所以要加1)
// 获取月份中的某一天
const dayOfMonth = currentDate.getDate();
console.log(`今天是本月的第${dayOfMonth}天`); // 今天是本月的第1天(假设当前是1号)
// 获取星期
const dayOfWeek = currentDate.getDay();
console.log(`今天是星期${dayOfWeek}`); // 今天是星期6(假设当前是星期六,注意星期范围是0~6)
// 获取小时数
const hours = currentDate.getHours();
console.log(`当前小时数: ${hours}`); // 当前小时数: 15(假设当前是下午3点)
// 获取分钟数
const minutes = currentDate.getMinutes();
console.log(`当前分钟数: ${minutes}`); // 当前分钟数: 30
// 获取秒数
const seconds = currentDate.getSeconds();
console.log(`当前秒数: ${seconds}`); // 当前秒数: 45
// 获取毫秒数
const milliseconds = currentDate.getMilliseconds();
console.log(`当前毫秒数: ${milliseconds}`); // 当前毫秒数: 123
// 获取从1970-01-01 00:00:00计时的毫秒数
const timestamp = currentDate.getTime();
console.log(`当前时间戳: ${timestamp}`); // 当前时间戳: 1638313845123
// 使用set方法设置日期
currentDate.setFullYear(2025);
currentDate.setMonth(5); // 月份范围是0~11,所以这里表示6月
currentDate.setDate(15);
currentDate.setHours(12);
currentDate.setMinutes(30);
currentDate.setSeconds(45);
console.log(`设置后的时间: ${currentDate}`);
// 设置后的时间: Wed Jun 15 2025 12:30:45 GMT+0000 (Coordinated Universal Time)
数组对象
数组类型检测
两种常用的方式来检测一个变量是否为数组。使用 instanceof 运算符可以检测对象是否是某个类的实例,而 Array.isArray() 方法则专门用于判断一个值是否为数组。
// 创建一个数组和一个普通对象
var arr = [];
var obj = {};
// 使用 instanceof 运算符进行数组类型检测
console.log(arr instanceof Array); // 输出结果:true,arr是数组
console.log(obj instanceof Array); // 输出结果:false,obj不是数组
// 使用 Array.isArray() 方法进行数组类型检测
console.log(Array.isArray(arr)); // 输出结果:true,arr是数组
console.log(Array.isArray(obj)); // 输出结果:false,obj不是数组
添加或删除数组元素
JavaScript的数组对象提供了方法来添加或删除数组元素。通过以下方法,可以在数组的末尾或开头添加新的元素,或者在数组的末尾或开头移除元素。
方法名 | 功能描述 | 返回值 |
---|---|---|
push(参数1...) | 数组末尾添加一个或多个元素,会修改原数组 | 数组的新长度 |
unshift(参数1...) | 数组开头添加一个或多个元素,会修改原数组 | 数组的新长度 |
pop() | 删除数组的最后一个元素,若是空数组则返回undefined,会修改原数组 | 删除的元素值 |
shift() | 删除数组的第一个元素,若是空数组则返回undefined,会修改原数组 | 删除的元素值 |
代码示例:
// 添加或删除数组元素
var arr = [1, 2, 3];
console.log(arr.push(4)); // 在数组末尾添加元素,返回新数组的长度:4
console.log(arr); // 输出结果:[1, 2, 3, 4]
console.log(arr.unshift(0)); // 在数组开头添加元素,返回新数组的长度:5
console.log(arr); // 输出结果:[0, 1, 2, 3, 4]
console.log(arr.pop()); // 移出数组末尾元素,返回被移出的元素:4
console.log(arr); // 输出结果:[0, 1, 2, 3]
console.log(arr.shift()); // 移出数组开头元素,返回被移出的元素:0
console.log(arr); // 输出结果:[1, 2, 3]
数组排序
JavaScript数组对象提供了对数组元素进行排序的方法,可以按照升序或降序排列数组元素,也可以自定义排序规则。
方法 | 功能描述 | 返回值 |
---|---|---|
reverse() | 颠倒数组中元素的位置,该方法会改变原数组 | 数组的新长度 |
sort() | 对数组的元素进行排序,该方法会改变原数组 | 数组的新长度 |
代码示例:
// 数组排序
var numbers = [4, 2, 5, 1, 3];
console.log(numbers.sort()); // 对数组元素进行排序,返回排序后的数组:[1, 2, 3, 4, 5]
console.log(numbers.reverse()); // 颠倒数组元素的顺序,返回颠倒后的数组:[5, 4, 3, 2, 1]
数组索引
在开发中,若要查找指定的元素在数组中的位置,可以使用数组对象提供的检索方法。
方法 | 功能描述 |
---|---|
indexOf() | 返回在数组可以找到给定值的第一个索引,如果不存在,则返回-1 |
lastIndexOf() | 返回指定元素在数组中的最后一个索引,如果不存在,则返回-1 |
代码示例:
// 数组索引
var fruits = ['apple', 'orange', 'banana'];
console.log(fruits.indexOf('orange')); // 查找元素索引,返回元素在数组中的位置:1
数组转化为字符串
可以使用数组对象的 join()
和 toString()
方法将数组转换为字符串。
方法 | 功能描述 |
---|---|
toString() | 把数组转换为字符串,逗号分隔每一项 |
join('分隔符') | 将数组的所有元素连接到一个子字符串中 |
代码示例:
// 数组转换为字符串
var letters = ['a', 'b', 'c'];
console.log(letters.toString()); // 转换为逗号分隔的字符串:"a,b,c"
console.log(letters.join()); // 使用默认分隔符转换为字符串:"a,b,c"
console.log(letters.join('')); // 不使用分隔符转换为字符串:"abc"
console.log(letters.join('-')); // 使用破折号分隔转换为字符串:"a-b-c"
数组的其他方法
JavaScript还提供了许多其他常用的数组方法,例如填充数组、连接数组、截取数组元素等。
方法 | 功能描述 |
---|---|
fill() | 用一个固定值填充数组中指定下标范围内的全部元素 |
splice() | 数组删除参数为(第几个开始,要删除个数),返回被删除项目的新数组 |
slice() | 数组截取,参数为(begin,end),返回被截取项目的新数组 |
concat() | 连接两个或多个数组,不影响原数组,返回一个新数组 |
代码示例:
// 数组填充
var numbers = [1, 2, 3, 4];
console.log(numbers.fill(0)); // 用0填充数组中所有元素,返回新数组:[0, 0, 0, 0]
// 数组删除
var fruits = ['apple', 'orange', 'banana', 'grape'];
console.log(fruits.splice(1, 2)); // 从索引1开始删除2个元素,返回被删除的元素数组:['orange', 'banana']
console.log(fruits); // 输出结果:['apple', 'grape']
// 数组截取
var colors = ['red', 'blue', 'green', 'yellow'];
console.log(colors.slice(1, 3)); // 截取索引1到2的元素,返回新数组:['blue', 'green']
console.log(colors); // 输出结果:['red', 'blue', 'green', 'yellow']
// 数组连接
var arr1 = [1, 2, 3];
var arr2 = ['a', 'b', 'c'];
console.log(arr1.concat(arr2)); // 连接两个数组,返回新数组:[1, 2, 3, 'a', 'b', 'c']
console.log(arr1); // 输出结果:[1, 2, 3],原数组不受影响
console.log(arr2); // 输出结果:['a', 'b', 'c'],原数组不受影响
字符串对象
字符串对象的使用
字符串对象使用new String()来创建,在String构造函数中传入字符串,这样就会在返回的字符串对象中保存这个字符串。
// 直接创建字符串,不需要使用 new String()
var str = 'apple'; // 创建字符串
console.log(str); // 输出结果: 'apple'
console.log(str.length); // 获取字符串长度,输出结果: 5
根据字符返回位置
方法 | 功能描述 |
---|---|
indexOf(searchValue) | 获取searchValue在字符串中首次出现的位置 |
lastIndexOf(searchValue) | 获取searchValue在字符串中最后出现的位置 |
代码示例:
// 根据字符返回位置
var helloWorld = 'HelloWorld';
console.log(helloWorld.indexOf('o')); // 获取 'o' 在字符串中首次出现的位置,输出结果: 4
console.log(helloWorld.lastIndexOf('o')); // 获取 'o' 在字符串中最后出现的位置,输出结果: 6
根据位置返回字符
成员 | 作用 |
---|---|
charAt(index) | 获取index位置的字符,位置从0开始 |
charCodeAt(index) | 获取index位置的字符的ASCII码 |
str[index] | 获取指定位置处的字符(HTML5新增) |
代码示例:
// 使用 charAt(index) 方法
var str = 'HelloWorld';
var charAtIndex = str.charAt(1); // 获取位置 1 处的字符
console.log(charAtIndex); // 输出结果: 'e'
// 使用 charCodeAt(index) 方法获取字符的 ASCII 码
var asciiCode = str.charCodeAt(1); // 获取位置 1 处字符的 ASCII 码
console.log(asciiCode); // 输出结果: 101
// 使用字符串索引 (str[index]) 直接获取指定位置处的字符
var charAtIndex2 = str[1]; // 获取位置 1 处的字符
console.log(charAtIndex2); // 输出结果: 'e'
字符串操作方法
方法 | 作用 |
---|---|
concat(str1,str2,str3...) | 连接多个字符串 |
slice(start,end) | 截取从start位置到end位置之间的一个子字符串 |
substring(start,end) | 截取从start到end之间的一个子字符串,基本和slice相同,但是不接受负值 |
substr(start,length) | 截取从start开始到length的子字符串 |
toLowerCase() | 获取字符串的小写形式 |
toUpperCase() | 获取字符串的大写形式 |
split(separator,limit) | 使用separator分隔符将字符串分隔成数组,litmit用于限制数量 |
replace(str1,str2) | 使用str2替换字符串的str1,返回替换结果,只会替换第一个字符 |
代码示例:
// 字符串连接
var str1 = 'Hello';
var str2 = 'World';
var resultConcat = str1.concat(' ', str2);
console.log(resultConcat); // 输出结果:Hello World
// 字符串截取
var originalStr = 'JavaScript is powerful';
var resultSlice = originalStr.slice(0, 10);
var resultSubstring = originalStr.substring(11, 18);
var resultSubstr = originalStr.substr(19, 9);
console.log(resultSlice); // 输出结果:JavaScript
console.log(resultSubstring); // 输出结果:powerful
console.log(resultSubstr); // 输出结果:l
// 字符串大小写转换
var mixedCaseStr = 'MiXeD CaSe StRinG';
var resultLowerCase = mixedCaseStr.toLowerCase();
var resultUpperCase = mixedCaseStr.toUpperCase();
console.log(resultLowerCase); // 输出结果:mixed case string
console.log(resultUpperCase); // 输出结果:MIXED CASE STRING
// 字符串分割和替换
var splitStr = 'apple,orange,banana';
var resultSplit = splitStr.split(',');
var replaceStr = 'Hello World';
var resultReplace = replaceStr.replace('World', 'Universe');
console.log(resultSplit); // 输出结果:["apple", "orange", "banana"]
console.log(resultReplace); // 输出结果:Hello Universe
更多的内置对象可以Mozilla开发者网络(MDN)上查询。