# JS内置对象 #

1. 内置对象

JS有三种对象: 自定义对象、内置对象、BOM浏览器对象。

内置对象就是指 JS 语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能(属性和方法),如Math、Date、Arry、String。

2. Math对象

Math 对象不是构造函数,它具有数学常数和函数的属性和方法。跟数学相关的运算(求绝对值,取整、最大值等)可以使用 Math 中的成员。

	Math.PI		 	 		// 圆周率
	Math.floor() 	 		// 向下取整
	Math.ceil()             // 向上取整
	Math.round()            // 四舍五入版 就近取整   注意 -3.5   结果是  -3 
	Math.abs()		 		// 绝对值
	Math.max()/Math.min()	// 求最大和最小值 

随机数方法random()

random()堆积返回一个小数,取值范围[0, 1)

	function getRandom(min, max) {
	  return Math.floor(Math.random() * (max - min + 1)) + min; 
	}

3. 日期对象

3.1 Date对象

  • Date 对象和 Math 对象不一样,他是一个构造函数,所以我们需要实例化后才能使用。
  • Date 实例用来处理日期和时间。

3.2 Date()方法的使用

获取当前时间必须实例化
	let now = new Date();
	console.log(now);
3.3 Date()构造函数的参数

如果括号里面有时间,就返回参数里面的时间。例如日期格式字符串为‘2019-5-1’,可以写成new Date('2019-5-1') 或者 new Date('2019/5/1')

  • 如果Date()不写参数,就返回当前时间
  • 如果Date()里面写参数,就返回括号里面输入的时间
3.4 日期格式化

获取日期指定部分的相关方法。

	let now = new Date();
	now.getFullYear();	//获取年
	now.getMonth();		//获取当月(0-11)
	now.getDate();		//获取当天日期
	now.getDay();		//获取星期几
	now.getHours();		//获取小时
	now.getMinutes();	//获取分钟
	now.getSeconds();	//获取秒

经典案例:倒计时

4. 数组对象

4.1 创建数组对象的两种方式

  • 字面量方式
  • new Array()

4.2 检测是否为数组

  • instanceof

运算符,可以判断一个对象是否属于某种类型

  • Array.isArray()

用于判断一个对象是否为数组,isArray() 是 HTML5 中提供的方法

	let arr = [1, 23];
	let obj = {};
	console.log(arr instanceof Array); // true
	console.log(obj instanceof Array); // false
	console.log(Array.isArray(arr));   // true
	console.log(Array.isArray(obj));   // false

4.3 添加/删除数组元素的方法

  • push()

在末尾加若干个元素。返回修改后的数组长度。

  • unshift()

在开头加若干个元素。返回修改后的数组长度

  • pop()

删除并抛出返回数组最后一个元素。数组长度-1,返回删除的最后一个元素值。

  • shift()

删除并抛出返回数组第一个元素。数组长度-1,返回删除的第一个元素值。

4.4 数组排序

  • reverse() 颠倒数组中元素的顺序,无参数。

  • sort() 对数组的元素进行排序。

      let arr = [1, 64, 9, 6];
      arr.sort(function(a, b) {
      	return b - a;      // 降序
      // return a - b;   // 升序
      });
      console.log(arr);
    

4.5 数组索引方法

  • indexOf()

数组中查找给定元素的第一个索引。存在则返回索引号,否则返回-1。

  • lastIndexOf()

在数组中的最后一个索引。存在则返回索引号,否则返回-1。

经典案例:数组去重

4.6 数组转换为字符串

  • toString()

把数组转换成字符串,逗号分隔每一项。返回值是一个字符串。

  • join('分隔符')

方法用于把数组中的所有元素转换为一个字符串。返回一个字符串。

4.7 数组连接与分割

  • concat()

连接两个或多个数组,不影响原数组。返回一个新数组。

  • slice()

slice(begin, end) 。数组截取,返回截取项目的新数组。

  • splice()

splice(从第几个开始, 删除的个数)。数组删除,不包括开始的那个元素,返回被删除项目的新数组,会影响原数组。

5. 字符串对象

5.1 基本包装类型

基本包装类型就是把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法。

let str = 'andy';
console.log(str.length);

基本数据类型是没有属性和方法的,但是上面这段代码可以执行。原因是js会把基本数据类型包装为复杂数据类型。代码的执行过程如下:

// 1. 生成临时变量,把简单类型包装为复杂数据类型
let temp = new String('andy');
// 2. 赋值给我们声明的字符变量
str = temp;
// 3. 销毁临时变量
temp = null;

5.2 字符串的不可变

指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间。

var str = 'abc';
str = 'hello';
// 当重新给 str 赋值的时候,常量'abc'不会被修改,依然在内存中
// 重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变
// 由于字符串的不可变,在大量拼接字符串的时候会有效率问题
var str = '';
for (var i = 0; i < 100000; i++) {
    str += i;
}
console.log(str); // 这个结果需要花费大量时间来显示,因为需要不断的开辟新的空间

5.3 根据字符返回位置

字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串。

  • indexOf('要查找的字符','开始的位置')

数组中查找给定元素的第一个索引。存在则返回索引号,否则返回-1。

  • lastIndexOf()

在数组中的最后一个索引。存在则返回索引号,否则返回-1。

经典案例:字符次数统计

5.4 根据位置返回字符(重点)

  • charAt(index)

返回指定位置的字符。

  • charCodeAt(index)

返回指定位置的字符的ASCII码。

  • str[index]

获取指定位置处的字符。(HTML5,IE8+支持,和charAt()等效)

5.5 字符串的操作方法(重点)

  • concat(str1, str2...)

拼接多个字符串。

  • substr(strat, length)

从start位置开始,截取length个数的字符。

  • slice(start, end)

从start位置开始,截取到end的(不包括end)

  • substring(strart, end)

从start位置开始,截取到end的(不包括end),不接受负值

5.6 replace()和split()方法

  • replace(str, newStr)

方法用于在字符串中用一些字符替换另一些字符

  • split()

方法用于切分字符串,它可以将字符串切分为数组。在切分完毕之后,返回的是一个新数组。

	let str = 'a,b,c,d';
	console.log(str.split(','));   // 返回的是一个数组 [a, b, c, d]
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务