内置对象
JavaScript中的对象分为3种:自定义对象、内置对象、浏览器对象
前两种对象是JS基础内容,属于ECMAScript
;第三个浏览器对象是JS独有的(内置对象)
内置对象是指JS语言自带的一些对象,这些对象供开发者使用,并提供一些常用的或是最基本而必要的功能(属性和方法)
内置对象可以帮助我们快速开发
JS常用的内置对象:Math
数学函数对象、Date
日期对象、Array
数组对象、String
字符串对象等
查阅文档(如何学习对象中的方法)
- 学习一个内置对象的使用,只要学会其常用的成员的使用即可,可以用过MDN/W3C来查阅文档学习
- Mozilla开发者网络(MDN)提供了有关开放网络技术(Open Web)的信息,包括
HTML
、CSS
和万维网及和HTML5
应用的API
步骤:查阅该方法功能;查看里面参数的意义和类型;查看返回值的意义和类型;通过demo
进行测试……
Math数学函数对象
Math
是一个内置对象,它具有数学常数和函数的属性和方法,不是一个函数对象
console.log(Math.PI); // 一个属性,圆周率
console.log(Math.max(1,22,57,95)); // 一组数字中的最大值
console.log(Math.max()); // -Infinity
console.log(Math.max(57,03,'呵呵')); // NaN
// 取最大值,不传参返回值为-Infinity,如果有参数不能被转化为数值,则返回NaN
// 绝对值
Math.abs()
// 取整
Math.floor() // 向下取整 往最小了取值
Math.ceil() // 向上取整 往最大了取值
Math.round() // 四舍五入 特殊情况:负数中.5是往大了取值 例如-1.5取-1
// 取0~1之间的随机小数
Math.random() // 获取0~1(不包括1)之间的随机小数,每次获取的结果都不一样,括号里面不传参数
// 获取n~m之间的随机整数(不包含m)
Math.floor(Math.random() * (m - n) + n)
// 获取n~m之间的随机整数(包含m)
Math.floor(Math.random() * (m - n + 1) + n)
========================
// 案例:随机点名
function getRandom(n, m) {
return Math.floor(Math.random() * (m - n + 1) + n);
}
var arr = ['张三', '李四', '赵四', '张三风', '丁一', '赵五'];
alert(arr[getRandom(0, arr.length-1)]);
日期对象Date
创建
Date
实例用来处理日期和时间,Date
对象基于1970年1月1日(世界标准时间)起的毫秒数
Date()
日期对象 是一个构造函数,必须使用new
来调用创建日期对象
var arr = new Array(); // 创建一个数组对象
var obj = new Object(); // 创建一个对象实例
var time = new Date();
console.log(time);
使用Date
- 如果没有参数,返回当前系统的当前时间
- 参数常用的写法:
- 数字型 2020,03,29
- 字符串型 '2020-03-29 11:14:13'
var time1 = new Date(2020,03,29); console.log(time1); // Wed Apr 29 2020 00:00:00 GMT+0800 (中国标准时间) 比实际月份大一个月 var time2 = new Date('2020-03-29 11:14:13'); console.log(time2); // Sun Mar 29 2020 11:14:13 GMT+0800 (中国标准时间)
日期格式化
方法名 | 说明 | 代码 |
---|---|---|
getFullYear() |
获取当前年份 | time.getFullYear() |
getMonth() |
获取当月(0~11) | time.getMonth() |
getDate() |
获取当天日期 | time.getDate() |
getDay() |
获取星期几(周日0到周六6) | time.getDay() |
getHours() |
获取当前小时 | time.getHours() |
getMinutes() |
获取当前分钟 | time.getMinutes() |
getSeconds() |
获取当前秒钟 | time.getSeconds() |
var time = new Date();
console.log(time.getFullYear()); // 返回当前年份
console.log(time.getMonth() + 1); // 返回当前月份,如果不加一返回结果比现在小一月
console.log(time.getDay()); // 今天周几(周日会返回零)
================
// 案例:获取当前时间
var time = new Date();
var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
var year = time.getFullYear(),
month = time.getMonth() + 1,
date = time.getDate(),
hours = time.getHours(),
minutes = time.getMinutes(),
seconds = time.getSeconds(),
day = time.getDay();
alert('今天是:' + year + '年' + month + '月' + date + '日' + hours + '点' + minutes + '分' + seconds + '秒 ' + arr[day]);
获取日期的总的毫秒形式
Date
对象是基于1970年1月1日(世界标准时间)起的毫秒数(时间戳)
用毫秒数来计算时间更加精确
valueOf()
getTime()
var date = newDate();
console.log(date.valueOf()); // 获取现在时间距离1970年1月1日的总的毫秒数
console.log(date.getTime());
// 简单写法(最常用的写法)
var date1 = +new Date(); // +new Date() 返回的就是总的毫秒数
console.log(date1);
// H5新增的 获取总的毫秒数
console.log(Date.now());
数组对象
创建数组的两种方式
- 字面量方式
// var arr = []; // 创建一个空数组
var arr = [1,2,3,4,5,6];
console.log(arr[5]);
new Array()
// var arr = new Array(); // 创建一个空数组
// var arr = new Array(2); // 这个2代表数组的长度,里面有两个空的数组元素
var arr = new Array(2,3); // 等价于[2,3] 这样写代表里面有两个数组元素 2和3
console.log(arr);
检测是否为数组
-
instanceof
运算符 可以检测是否为数组
var arr = [];
var obj = {};
console.log(arr instanceof Array); //=>true
console.log(obj instanceof Array); //=>false
-
Array.isArray()
检测是否为数组
如果检测对象是
Array
就返回true
,否则返回false
(H5新增方法 IE9以上才支持)
-
instanceof
和isArray
的区别
当检测Array
实例时,Array.isArray
优先于instanceof
,因为Array.isArray
能检测iframes
添加删除数组的方式
方法名 | 说明 | 返回值 | 是否修改原数组 |
---|---|---|---|
push(参数1...) | 末尾添加一个或多个元素 | 并返回新的长度 | 是 |
pop() | 删除数组中最后一个元素,把数组长度减一,无参数 | 返回它删除的元素的值 | 是 |
unshift(参数1...) | 向数组开头添加一个或多个元素 | 并返回新的长度 | 是 |
shift() | 删除数组的第一个元素,数组长度减一,无参数 | 返回第一个元素的值 | 是 |
数组排序
方法名 | 说明 | 是否修改原数组 |
---|---|---|
reverse() | 颠倒数组中元素的顺序 | 该方法会改变原来的数组 返回新数组 |
sort() | 对数组的元素进行排序 | 该方法会改变原来的数组 返回新数组 |
- 翻转数组
var arr = [1,2,3];
arr.reverse();
console.log(arr);
- 数组排序(冒泡排序)
var arr = [3,4,7,9,5,1];
arr.sort();
console.log(arr);
sort
方法中如果不传递参数,是无法处理10以上数字排序的
sort((a,b) => a - b) //=>升序排列
sort((a,b) => b - a) //=>降序排列
// 例如:
var arr = [33,334,72,95,57,122];
arr.sort((a,b) => a - b);
console.log(arr);
数组索引方法
方法名 | 说明 | 返回值 |
---|---|---|
indexOf | 指定元素在数组中的第一个索引 | 如果存在,返回索引号,不存在就返回-1 |
lastIndexOf | 指定元素在数组中最后一个的索引 | 如果存在,返回索引号,不存在就返回-1 |
数组转化为字符串
方法名 | 说明 | 返回值 |
---|---|---|
toString() | 把数组转换为字符串,逗号分隔每一项 | 返回一个字符串 |
join('分隔符') | 方法用于把数组中的所有元素转化为字符串 | 返回一个字符串 |
实现数组中的增删改查
方法名 | 说明 | 返回值 |
---|---|---|
splice(n,m) | 实现数组的增删改,从数组索引n开始,删除m个元素,m不写就是删到末尾,把删除的内容进行存储 | 返回的是新数组 |
silce(n,m) | 实现数组的查询,从索引n开始,查找到索引m处(不包含m),m不写查找到数组末尾 | 查找到的内容以新数组的形式返回 |
-
splice(n,m)
:实现数组的增删改,从数组索引n开始,删除m个元素,m不写就是删除到末尾-
splice(n,m,x)
:从数组索引n开始删除m个元素,用x替换被删除的元素,返回结果是一个数组,存储删除的内容 -
splice(n,0,x1,x2...)
:从索引n开始,一个都不删除,返回结果是一个空字符串,把x1或更多值插入到索引n前面 -
splice(0)
:基于这种方法可以清空一个数组,把原始数组中的内容以新数组的方式存储起来(有点类似于数组的克隆:把原来数组克隆一份一摸一样的给新数组)
-
-
slice(n,m)
:实现数组的查询- n为零,m不写可以理解为把原始数组中的每一项都查找到,以新数组返回,实现出数组的克隆,得到的新数组和原始数组是两个不同的数组(两个不同的堆),但是堆中存储的内容是一样的
数组对象中方法的补充
-
concat
实现数组的拼接:把多个数组(或多个值)最后拼接为一个数组,原始数组不会变,返回结果是拼接后的新数组 -
includes
验证数组中是否包含这一项:包含返回true,不包含返回false -
forEach
遍历数组中的每一项:forEach([函数])
遍历数组中的每一项,数组中有多少项,函数就会被相继执行多少次 -
map
:forEach
是不支持返回值的,而map可以在forEach的基础上支持返回值,把原来数组中每一项的值替换为新值,最后存储在一个新数组中,但是原始数组是不变的
字符串对象
基本包装类型:把基本数据类型包装成复杂数据类型(引用数据类型)
// 基本包装类型
var str = 'andy';
console.log(str.length);
// 生成临时变量,把简单数据类型包装为复杂数据类型
var temp = new String('andy');
// 把临时变量赋值给 str
str = temp;
// 销毁临时变量
temp = null;
为了方便操作基本数据类型,JavaScript还提供了三个特殊的引用数据类型:Number、String和Boolean
字符串的不可变
指的是里面的值不可变,虽然看上去改变内容,但其实是地址变了,内存中新开辟了一个内存空间
不要大量拼接字符串
字符串中的内置方法
字符串中所有的方法都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串
方法名 | 说明 |
---|---|
indexOf('要查找的字符',开始的位置) | 返回指定内容在字符串中的位置,如果找不到就返回-1,开始的位置是index索引号 |
lastIndexOf | 从后往前找,只找第一个匹配的 |
- 格式:
indexOf('要查找的字符',[起始的位置])
- 格式:
lastIndexOf('要查找的字符',[起始的位置])
根据位置返回字符
方法名(index) | 说明 | 使用 |
---|---|---|
charAt(index) | 返回指定位置的字符 | arr.charAt(index) |
charCodeAt(index) | 获取指定位置处字符的ASCII码 | arr.charCodeAt(index) |
str[index] | 获取指定位置处字符 | HTML5,IE8+支持 和charAt()等效 |
charCodeAt:根据相应索引号字符的ASCII值,判断用户按下了哪个键
字符串中的操作方法
方法名 | 说明 |
---|---|
concat(str1,str2,str3...) | concat()方法用于拼接两个或多个字符串。拼接字符串,等价于+,+更常用 |
substr(n,m) | 从索引n开始,截取m个 |
slice(n,m) | 从索引n开始,截取到索引m,不包含m |
substring(n,m) | 从索引n开始,截取到索引m,不包含m 基本和slice相同,但是不接受负值 |
字符串替换
- 替换字符 replace('被替换的字符','替换为的字符') 它只会替换第一个字符
var str = 'apple';
console.log(str.replace('p','b'));
// 有一个字符串'abcoefoxyozzopp'要求把里面所有的o替换为 *
var str1 = 'abcoefoxyozzopp';
while (str1.indexOf('o') !== -1) {
str1 = str1.replace('o' , '*');
}
console.log(str1);
字符串转化为数组
split字符串转化为数组 split('分隔符') join把数组转化为字符串
var str = 'red, pink, blue';
console.log(str.split(',')); //=>["red","pink","blue"]
字符串方法补充
- toUpperCase() 转化为大写
- toLowerCase() 转化为小写
网友评论