学习链接:https://www.bilibili.com/video/BV1Sy4y1C7ha
JavaScript基础语法-dom-bom-js-es6新语法-jQuery-数据可视化echarts黑马pink老师前端入门基础视频教程
笔记涉及的是视频p156~p187的内容,涉及内置对象的内容,内容比较多,但是不要求能全部记住。并且要善于使用MDN查询其他的内置对象的功能和语法
目录
1. 内置对象
内置对象就是指js语言自带的一些对象,供开发者使用,并提供了常用的或最基本必要的功能
1.1 查文档
1.1.1 MDN
MDN链接:https://developer.mozilla.org/zh-CN/
如何学习对象中的方法(Math.max()为例):
- 查阅该方法的功能
- 查看里面参数的意义和类型
- 查看返回值的意义和类型
- 通过demo进行测试
1.2 Math对象
Math对象链接:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math
Math是一个内置对象,它拥有一些数学常数属性和数学函数方法。Math不是一个函数对象(构造函数),不需要new来调用,可以直接使用属性和方法。
1.2.1 求最大最小值
Math.max()&Math.min()
1.2.2 绝对值方法
Math.abs();
隐式转换:Math.abs('-1'),会将字符串-1转换为数字型-1,最终结果为1
1.2.3 三个取整方法
- Math.floor()//向下取整 例:Math.floor(1.9)->1
- Math.ceil()//向上取整 例:Math.ceil(1.1)->2
- Math.round()//四舍五入 就近取整 往大的取值 例: Math.round(1.5)->2 Math.round(-1.5)->-1
1.2.4 随机数方法
Math.random() 返回一个随机的浮点数,范围:[0,1)
随机生成两个数之间的随机数
function getRandom(min,max){
return Math.floor(Math.random() * (max - min + 1)) + min;
}
作业:要求用户猜1~50之间的一个数字。但是只有十次猜的机会
<script>
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var a = 0;
var b = getRandom(1, 50);
for (var i = 9; i >= 0; i--) {
if (i >= 0 && i < 10) {
a = prompt('请输入一个你猜1~50的一个数字:');
if (a < b) {
if (i == 0)
alert('没有猜对哦,已经没有机会啦');
else
alert('数猜小了,还有' + i + '次机会');
} else if (a > b) {
if (i == 0)
alert('没有猜对哦,已经没有机会啦');
else
alert('数猜大了,还有' + i + '次机会');
} else if (a == b) {
alert('猜对啦');
break;
}
} else {
break;
}
}
</script>
1.3 日期对象
Date() 是构造函数,需要用new创建日期对象
var date = new Date();
1.3.1 数字型
var date = new Date(2019, 10, 1);//返回结果是11月
1.3.2 字符串型
var date = new Date('2019-10-1 8:8:8');
1.3.3 日期格式化
var date = new Date();
- console.log(date.getFullYear());//返回当前日期的年份
- console.log(date.getMonth());//返回当前的月份小一个月
- console.log(date.getDate());//返回当前日期
- console.log(date.getDay());//返回星期几 特殊:周日返回的是0
- console.log(date.getHours());//返回小时
- console.log(date.getMinutes());//返回分钟
- console.log(date.getSeconds());//返回秒数
1.3.4 获得Date总的毫秒数
- date.valueOf()
- date.getTime()
- var date = +new Date();//+new Date()返回的是总毫秒数(常用)
- console.log(Date.now());
倒计时实例
剩余总秒数=用户输入的总时间秒数-当前时间总秒数
天: parseInt(times/60/60/24)
时:parseInt(times/60/60%24)
分:parseInt(times/60%60)
秒:parseInt(times%60)
1.4 数组对象
1.4.1 创建数组
- 字面量方式——var arr = [数值]
- new Array() ——var arr = new Array(单个数值表示数组长度/多个数值为数组元素)
1.4.2 检测是否为数组
- instanceof 数组名
是数组返回true;不是数组返回false
- Array.isArray(参数)
是数组返回true;不是数组返回false
1.4.3 添加数组元素方法
- 在数组末尾添加元素:数组名.push(数组元素); 返回值:新数组长度
- 在数组开头添加元素:数组名.unshift(数组元素); 返回值:新数组长度
1.4.4 删除数组元素方法
- 删除数组最后一个元素:数组名.pop(); 返回值:已删除的元素
- 删除数组开头第一个元素:数组名.shift(); 返回值:已删除的元素
1.4.5 翻转数组
数组名.reverse();
1.4.6 数组排序(冒泡排序)
数组名.sort(); ps:对于元素为单位数的数组有效
改良:
数组名.sort(function(a,b){
return a - b;//升序(降序:b - a )
});
1.4.7 数组索引方法
数组名.indexOf('数组元素'); 从前往后找
PS:数组有重复元素只会返回靠前的索引号;
没有元素返回值为-1;
数组名.indexOf('数组元素'); 从后往前找
PS:数组有重复元素只会返回靠后的索引号;
没有元素返回值为-1;
该方法可以实现数组去重(重点案例)
核心算法:遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组没有出现过,就添加到新数组,否则不添加
1.4.8 数组转换为字符串
- 数组名.toString()
- 数组名.join(分隔符)
1.4.9 课下查询
- concat()--连接两个或以上个数组
返回值:返回新数组,不影响原数组
- slice()--数组截取 slice(begin,end)
返回值:被截取项目新数组
- splice()--数组删除 splice(第几个开始,删除个数)
返回值:返回被删除项目的新数组,会影响原数组
1.5 字符串对象
1.5.1 基本包装类型
三种基本包装类型:String、Number、Boolean
(1)简单数据类型包装成复杂数据类型
var temp = new String('andy');
(2)把临时变量的值给str
str = temp;
(3)销毁临时变量
temp = null;
1.5.2 字符串的不可变
值不变,改变的是地址,内存中开辟了一个新空间
1.5.3 根据字符返回位置
字符串所有的方法都不会修改字符串本身(字符串不可变),操作完成返回新字符串
方法:
- 字符串名.indexOf('搜索的字符',[起始位置])
- 字符串名.lastindexOf('搜索的字符',[起始位置])
1.5.4 根据位置返回字符
- 数组名.charAt(index) 根据位置返回字符
- 数组名.charCodeAt(index) 返回相应索引号的字符ASII值
- str[index]获取指定位置处字符
1.5.5 拼接以及截取字符串
- concat(str1,str2,str3...) 连接两个或以上字符串,效果等同于+
- substr(start,length) 从start开始,取length个数(重点)
- slice(start,end) 从start开始,截取到end,end取不到
- substring(start,end) 和slice类似,但是不接受负值
1.5.6 替换字符串以及转换成数组
1.替换字符串
- 字符串.replace('被替换的字符','替换为的字符') 只会替换第一个字符
2.字符转换为数组
- 字符串.split('分隔符')