内置对象
●JavaScript中的对象分为3种: 自定义对象、内置对象、浏览器对象
●前面两种对象是JS基础内容,属于ECMAScript; 第三个浏览器对象属于我们JS独有的,JS API讲解
●内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能(属性和方法)
●内置对象最大的优点就是帮助我们快速开发
●JavaScript提供了多个内置对象: Math、 Date、Array. string等
1. Math对象
Math概述
Math对象不是构造函数,它具有 数学常数 和 函数 的属性和方法。跟数学相关的运算(求绝对值,取整、最大值等)可以使用Math中的成员。
Math. PI //圆周率
Math. floor () //向下取整
Math.ceil () //向上取整
Math. round () //四舍五入, 就近取整 注意-3.5结果是-3(碰到 . 5 就往大了取)3.5->4 -2.5 -> -2
Math.abs () //绝对值
Math .max () / Math.min() // 求最大和最小值
Math 数学对象不是一个 构造函数
所以我们不需要new来调用而是直接使用里面的属性和方法即可
例如:
console.log(Math.PI); //一个属性 圆周率
console.log(Math.max(1, 99,3)); // 99 寻找最大值
console. log(Math.max(-1, -10)); // -1
console. log(Math.max(1, 99,' pink老师')); // NaN
console.log(Math. max()); // -Infinity
利用对象封装自己的数学对象
例如:(里面有 PI 求最大值 )
var myMath = {
PI: 3.141592653,
max: function () {
var max = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
return max;
}
}
}
Math对象 随机数 方法 Math.random()
(返回一个随机的小数 0 =< x < 1)
这个方法里面 不跟参数
使用场景:我们想要得到两个数之间的随机整数并且包含这2个整数
Math. floor (Math. random( ) * ( max -min + 1)) + min;
我们可以写成函数封装起来:
function getRandom(min, max) {
return Math.floor(Math.random() * (maxmin + 1)) + min;
}
例如:得到 1 、10 之间的随机数并打印
console.log(getRandom(1, 10) );
日期对象(Date)
Date概述
●Date 对象和Math对象 不一样, 他是一个构造函数,所以我们需要 实例化 后才能使用
●Date 实例用来处理日期和时间
Date()方法的使用
1.获取当前时间必须实例化
var now=new Date();
console. log (now) ;
2. Date ()构造函数的参数
如果括号里面有时间,就返回参数里面的时间。
例如日期格式字符串为'2019-5-1' , 可以写成new Date('2019-5-1')
或者new Date("2019/5/1")
日期格式化
注意: 月份是从(0~11) , getDay 星期天是 0
格式化日期年月日
var date = new Date();
console.log(date.getFullYear()); //返回当前日期的年2022
console.log(date.getMonth() + 1); // 月份返回的月份小1个月记得月份+1 呦
console.log(date.getDate()); //返回的是几号
console.log(date.getDay()); // 周一返回的是1,周六返回的是6, 但是周日返回的是 0
我们写一个 2022年 2月9日星期三
var year = date.getFullYear();
var month = date.getMonth() + 1;
var dates =date.getDate();
var arr = ['星期日','星期一','星期二','星期三 ','星期四 ','星期五','星期六'];
var day =date.getDay();
console .log('今天是: ' + year + '年' + month + '月' + dates + '日' +arr[day]);
(此处打印 ’星期三‘ 较为巧妙, 使用数组 arr[0] ==’星期日‘ )
要求封装一个函数,返回当前的时分秒格式08:08:08
function getTime() {
var time = new Date();
var h = time.getHours();
h = h < 10 ? '0' + h :h; //如果小于10就在数字前面加 '0'
var m = time.getMinutes();
m= m < 10 ? '0' + m: m;
var s = time.getSeconds();
s=s<10 ? '0' + s:s;
return h+':'+m+':'+ s;
}
console.log(getTime());
获得 Date 总的毫秒数 (时间戳)
不是当前时间的毫秒数, 而是距离1970年1月1号过了多少毫秒数
1.通过valueOf() 或 getTime()
var date = new Date();
console.log(date.value0f()); //就是我们现在时间距离1970.1.1 总的毫秒数
console.log(date.getTime());
2.简单的写法(最常用的写法)
var date1 = +new Date(); // +new Date() 返回的就是总的毫秒数
console.log(date1);
+new Date(time) //距离 time 时间过去的总毫秒数
3. H5新增的获得总的毫秒数
console.log(Date.now());
制作 倒计时
function countDown(time) {
var nowTime = +new Date(); //返回的是当前时间总的毫秒数
var inputTime = +new Date(time); //返回的是用户输入时间总的毫秒数
var times = (inputTime - nowTime) / 1000; // times是剩余时间总的秒数
var d = parseInt(times / 60 / 60 / 24); //天
d = d < 10 ? '0' + d :d;
var h = parseInt(times / 60 / 60 % 24); //时
h = h < 10 ? '0'+h:h;
var m = parseInt(times / 60 % 60); //分
m = m < 10 ? '0' + m : m;
var s = parseInt(times % 60); //当前的秒
s = s < 10 ? '0' + s :s;
return d + '天' + h + '时' + m + '分' +s+'秒';
}
console.log(countDown('2022-2-9 8:00:00'));
数组对象
利用 new Array() 创建数组
var arr1=newArray();//创建了一个空的数组
var arr1 = new Array(2);//这个2表示数组的长度为2里面有2个空的数组元素
var arr1 = new Array(2, 3); //等价于[2,3] 这样写表示里面有2个数组元素是2和3
console.log(arr1);
在 new Array() 括号中
写一个数字 就代表这个数组有 几个空的数组元素
( new Array(2)这个2表示数组的长度为2,里面有2个空的数组元素 )
写多个数字 就代表 这个数组就是 由这几个数字组成的数组
new Array(2, 3);
( 等价于[2,3] 这样写表示里面有2个数组元素是2和3 )
检测是否为数组
(1) instanceof 运算符 它可以用来检测是否为数组 运算符 不只是Array 其他也行
返回 true false
var arr = [];
var obj = {};
console.log(arr instanceof Array); //true
console.log(obj instanceof Array); //false
(2) Array.isArray( 参数 ) ; H5新增的方法 ie9以上版本支持
console.log(Array.isArray(arr));
console.log(Array.isArray(obj)); //false
添加数组元素方法
1. push() 在我们数组的末尾添加一个或者多个数组元素 push推
var arr = [1, 2, 3];
arr.push(4,' pink' );
console.log(arr);
// arr==[1,2,3,4,'pink];
(1) push是可以给数组追加新的元素
(2) push() 括号中 参数直接写数组元素就可以了
(3) push完毕之后,返回的结果是新数组的长度
console.log(arr.push(4,' pink' )); / /结果为 5
(4) 原数组也会发生变化
2. unshift() 在我们数组的开头添加一个或者多个数组元素
var arr=[1,2,3];
console.log(arr.unshift('red', ' purp1e')); // 5
console.log(arr); // 1,2,3,'red', ' purp1e'
(1)unshift() 是可以给数组前面追加新的元素
(2) unshift() 括号中参数直接写数组元素就可以了
(3) unshift完毕之后,返回的结果是新数组的长度
(4) 原数组也会发生变化
删除数组元素方法
1. pop() 它可以 删除 数组的 最后一个元素
var arr=[1,2,3];
console.log(arr.pop());
console.log(arr);
(1)pop()是可以 删除 数组的最后一个元素记住 一次只能删除一个元素
(2) pop() 没有参数
(3) pop完毕之后,返回的结果是删除的那个元素
(4) 原数组也会发生变化
2.shift() 它可以 删除 数组的第一个元素
var arr=[1,2,3];
console .log(arr.shift());
console .log(arr);
(1)shift 是可以删除数组的第一个元素,记住一次只能删除一个元素
(2) shift() 没有参数
(3) shift完毕之后,返回的结果是删除的那个元素
(4) 原数组也会发生变化
1.翻转数组
var arr = ['pink', 'red', 'blue'];
arr.reverse();
console.log(arr);
.reverse() 属性 可以翻转数组
2.数组排序(冒泡排序)
var arr1 = [13, 4, 77, 1, 7];
arr1.sort(function (a, b) {
// return a - b;升序的顺序排列
return b - a; //降序的顺序排列
});
console.log(arr1);
变量.sort (function (a, b) {
// return a - b; 升序的顺序排列
return b - a; //降序的顺序排列
});
5.5数组索引方法
方法名 | 说明 | 返回值 |
indexOf() | 数组中查找给定元素的第一个索引 | 如果存在,返回索引号, 如果不存在,则返回-1。 |
lastIndexOf() | 在数组中给定元素的最后一个的索引, | 如果存在,返回索引号, 如果不存在,则返回-1。 |
数组去重
数组转换为字符串
方法名 | 说明 | 返回值 |
toString() | 把数组转换成字符串,逗号分隔每一项 | 返回一个字符串 |
join("分隔符') | 方法用于把数组中的所有元素转换为一个字符串。 | 返回一个字符串 |
join() 中可以指定你想要的分隔符去分隔
6.3根据字符返回位置
字符串所有的方法,都不会修改字符串本身(字符串是不可变的), 操作完成会返回一个新的字符串。
方法名 | 说明 |
indexOf('要查找的字符',开始的位置) | 返回指定内容在原字符串中的位置,如果找不到就返回-1,开始的位置是index索引号 |
lastIndexOf() | 从后往前找,只找第一个匹配的 |
6.4根据位置返回字符(重点)
方法名 | 说明 | 使用 |
charAt(index) | 返回指定位置的字符(index 字符串的索引号) | str.charAt(0) |
charCodeAt(index) | 获取指定位置处字符的ASCII码(index 索引号) | str.charCodeAt(0) |
str[index] | 获取指定位置处字符 | HTML5,IE8+支持和charAt()等效 |
替换字符 replace('before','after')
字符转换为数组 split(' 分隔符 ')
1.简单类型与复杂类型
简单类型 又叫做 基本数据类型 或者 值类型, 复杂类型 又叫做引用类型。
值类型∶简单数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型 string , number , boolean , undefined , null
引用类型︰复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型通过new关键字创建的对象(系统对象、自定义对象),如Object、Array、Date等
复杂类型 传参 是把地址传给 形参
简单数据类型 传参 是把值传给 形参