1 JS对象
1.1 创建对象
1 var obj = {};
2 var obj = new Object();
3 function obj() {
this.属性 = 值;
this.方法 = function () {};
}
1.2 遍历对象
for (var k in obj) {
console.log(k); //得到属性名
console.log(obj[k]);//得到属性值
}
1.3 new 执行过程
- 在内存中建立一个新的空对象
- 让this指向这个新对象
- 执行构造函数中的代码,给这个新对象添加属性和方法
- 返回这个对象(所以构造函数不需要return)
2 内置对象
2.1 Math对象
Math对象不是构造函数,所以可以直接使用里面的方法和属性
常见用法
Math.PI;
Math.abs(); //圆周率
Math.floor(); //向下取整
Math.ceil(); //向上取整
Math.round(); //四舍五入 但如 -3.5 结果是-3
Math.max(); //最大值
Math.min(); //最小值
Math.random()
随机取整封装
在两个整数中随机选择整数,包括这两个整数本身.
function getRandom(max, min) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
2.2 Date对象
Date对象是一个构造函数 ,必须使用new来调用创建我们的日期对象
获取总毫秒数
(1)通过valueOf() getTime()
var date = new Date();
console.log(date.valueOf());
console.log(date.getTime());
(2)简单方法
var date = +new Date();
(3)直接调用
Date.now()
用时间戳做倒计时
function countDown(time) {
var nowTime = +new Date();
var inputTime = +new Date(time);
var times = (inputTime - nowTime) / 1000;
var d = parseInt(times / 3600 / 24);
d = d < 10 ? '0' + d : d;
var h = parseInt((times / 3600) % 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 + '秒';
}
2.3 数组对象
Array对象是构造函数
创建数组
var arr = [1,2,3];
var arr = new Array[];
数组操作
检测是否为数组
arr instanceof Array 返回值为true或false
arr.isArray() 返回值为true或false 优先
添加数组元素
arr.push() //在数组末尾添加一个或多个元素,返回值为新数组长度
arr.unshift() //在数组开头添加一个或多个元素,返回值为新数组长度
删除数组元素
arr.pop() //删除数组末尾最后一个元素,一次只能删一个,返回值为被删除的元素
arr.shift() //删除数组开头第一个元素,一次只能删一个,返回值为被删除的元素
数组翻转
arr.reverse()
冒泡排序
arr.sort()
arr.sort(function(a,b){
//return a-b 升序
//return b-a 降序
}
数组索引
arr.indexOf()
数组去重
function unique(arr) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
数组转化为字符串
arr.toString()
arr.join('-') //可以在将','转化为其他连接符号
2.4 字符串对象
字符串在内存中不可变,所以不要大量的拼接字符串,并且所有的字符串操作方法都不会修改字符串。
根据字符返回位置
var str = 'dsklgklj'
str.indexOf('s',2) //第一个参数选择字符,第二个参数选择从哪个位置开始
console.log(str.indexOf('s')) //返回值为1
指定字符串出现的位置以及次数
var str = 'jklsglkajlkgj';
var index = str.indexOf('k');
num = 0;
while (index !== -1) {
console.log(index);
index = str.indexOf('k', index + 1);
num++;
}
console.log(num); //返回值为 1,6,10,3
根据位置返回字符
str.charAt(index); //返回字符
str.charCodeAt; //返回相应索引号的ASCII值
str[index]; //返回字符
统计出现最多次数的字符
var str = 'kljlkkdasjfdksjfdksajfksljfkjl';
var obj = {};
for (var i = 0; i < str.length; i++) {
if (obj[str[i]]) {
obj[str[i]]++;
} else {
obj[str[i]] = 1;
}
}
console.log(obj);
for (var k in obj) {
num = obj['k']; //出现多少次
max = k; //出现最多次的字符
}
console.log(num);
console.log(max);
常用字符串操作方法
concat(str1, str2); //连接两个或多个字符串
str.substr(start, length); //从start位置开始截取,length是取的个数
str.replace('被替换的字符', '替换的字符'); //只会替换第一个
str.split('分隔符'); //用分隔符隔开的字符串才能转化为数组;