(一)对象
对象的定义: JS中,对象是一组无序的相关属性和方法的集合,对象是由属性和方法构成的。
创建对象有三种方法
1 .对象字面量
var 对象名 = {
key1: value1,
key2: value2,
};
2 .new Object创建对象
var obj = new Object();
3 .构造函数创建对象
遍历对象:for…in
var obj = {
uname: '张三',
age: 18,
gender: '男'
}
for (var k in obj) {
console.log(k); // 属性名
console.log(obj[k]); // 属性值
}
对象可以分为三种:一种是“自定义对象”;另外一种是“内置对象”和“浏览器对象”。自定义对象,指的是需要我们自己定义的对象,跟“自定义函数”是一样的道理;内置对象,指的是不需要我们自己定义(即系统已经定义好的)、可以直接使用的对象,跟“内置函数”也是一样的道理。
内置对象:
① 字符串对象:String
首先注意一点,字符串所有的方法都不会改变字符串自身,操作完成后会返回一个新字符串。
1 .获取字符串的长度(前面用过很多次了)
string.length;
length应用:利用字符串对象获取一串数字的长度
function getNumberLen(number) {
var str = number + '';
return str.length;
}
document.write(getNumberLen(111222333));// 9
2 .大小写转换
str.toLowerCase();// 将字符串str转换为小写
str.toUpperCase(); // 大写
3 .通过索引获取字符串中的指定字符
str.charAt(索引号); //获取字符串str中指定索引号位置的字符
获取指定字符的ascii码值:
str.charCodeAt(索引号);
4 .字符串截取;substring(strat, end);
var str = '字符串截取';
//只指定start,默认从strat截取到最后
str.substring(0); // 字符串
//指定end,但是end截取不到,要前不要后
str.substring(2, 3); // 串
其他字符串截取方法(了解一下)
substr(start, length); // length是从指定的start开始往后,需要截取的长度
slice(start, end); // 和substring相同,唯一区别是可以指定负值
5 .字符串替换
// 将指定字符串中第一个(组)符合指定条件的字符替换为指定字符
str.replace('被替换', '替换为'); //第一个参数可以使用正则表达式,用来匹配指定范围内所有符合替换条件的内容
6 .字符串和数组之间的转换
// 数组转换为字符串
list.join('分隔符');
// 字符串转换为数组
str.split('分隔符');
7 . 获取字符串索引
str.indexOf('要查找', '起始位置'); // 起始位置可以省略,返回第一个符合条件的字符串索引
str.lastIndexOf('要查找'); // 从后往前查找
利用字符串索引查找所有指定字符出现的位置索引;
var str = 'abcdoefoxyozzopp';
var index = str.indexOf('o');
while (index != -1) {
console.log('索引:' + index);
index = str.indexOf('o', index + 1);
}
② 数组对象:Array
1 .数组拼接
var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];
var newArr = arr1.concat(arr2); // [1, 2, 3, 4, 5, 6]
2 .数组反转
var arr = [1, 2, 3];
arr = arr.reverse(); // [3, 2, 1]
3 .检测是否为数组
var arr = [1, 2, 3];
console.log(arr instanceof Array); // 运算符
var obj = {};
console.log(Array.isArray(obj)); // 函数
4 .元素的添加和删除(前面学过)
push();
shift();
unshift();
pop();
5 .数组排序
var arr = [1, 9, 4, 6, 3];
arr.sort(function(a, b) {
return a - b;// 升序
// b - a; 降序
})
6 .数组索引
indexOf(元素);如果找到返回第一个符合条件的数组元素索引号,如果找不到返回 -1
lastIndexOf(元素);从后往前
通过数组索引实现数组去重:
var arr = ['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b'];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) == -1) {
newArr.unshift(arr[i]);
}
}
7 .数组元素截取
var arr = ['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b'];
// arr.splice(第几个开始, 删除个数); 返回操作完成的新数组,原数组也会变成截取后的数组
arr.splice(0, 2);// ['c', 'a']
③ 日期对象:Date
日期对象Date() 是一个构造函数,必须使用new来调用创建日期对象
1 .获取当前时间:
var date = new Date();// 无参数,返回当前系统时间
var myDate = new Date('2020-01-08 16:19:00'); // 返回指定时间
2 .获取当前日期的指定部分;
时间格式化,获得当前时间:
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var dates = date.getDate();
var days = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
var day = date.getDay();
var h = date.getHours();
var m = date.getMinutes();
var s = date.getSeconds();
h = h > 9 ? h : '0' + h;
m = m > 9 ? m : '0' + m;
s = s > 9 ? s : '0' + s;
var myDate = '当前时间是:' + year + '年' + month + '月' + dates + '日' + days[day] + h + ':' + m + ':' + s;
时间戳:获得当前距离1970年1月1日(系统最初起始时间)总的毫秒数
var date = +new Date();
var date = +new Date('2021-01-09 10:00:00');// 指定时间的时间戳
var date = Date.now();// 新增获取当前时间戳的方法
倒计时:
输入时间戳 - 当前时间戳 = 需要倒计时的总毫秒数
需要倒计时的总秒数 = 需要倒计时的总毫秒数 / 1000;(1s = 1000ms)
需要倒计时的总天数 = 总秒数 / 60 / 60 / 24,取整
需要倒计时的总小时数 = 总秒数 / 60 / 60 % 24,取整
需要倒计时的总分钟 = 总秒数 / 60 % 60 ,取整
需要倒计时的总秒数 = 总秒数 % 60,取整
function getTimeCutDown(timer) {
var date = new Date();
var dater = Date.now(); //当前
var daters = +new Date(timer); //输入
var cutDown = (daters - dater) / 1000;
var h = parseInt(cutDown / 60 / 60 % 24);
var m = parseInt(cutDown / 60 % 60);
var s = parseInt(cutDown % 60);
h = h > 9 ? h : '0' + h;
m = m > 9 ? m : '0' + m;
s = s > 9 ? s : '0' + s;
return h + ':' + m + ':' + s;
}
getTimeCutDown('2021-01-09 10:00:00');
④ 数值对象:Math
1 .最大值和最小值
Math.max(1, 2, 3);// 3 参数中含有非数字,结果为NaN,无参数返回-Infinity
Math.min(1, 2, 3); // 1
2 .圆周率
Math.PI(); // 3.141592653...
3 .向下取整(如果有小数无条件舍弃小数)
Math.floor(3.14); // 3
4 .向上取整(如果有小数无条件进位)
Math,ceil(3.14); // 4
5 .四舍五入(负数有问题)
Math.round(3.14); // 3
6 . 绝对值(对数字型字符串进行隐式转换)
Math.abs(-3.14); // 3.14
7 .随机数
Math.random(); 返回一个大于等于0,小于1的随机小数
得到两个数之间的随机整数:
function getRandom(min, max) {
min = Math.ceil(min);
man = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min);
}