对象和类型
# 对象
在 JavaScript , 对象是一组无序的相关属性和方法的集合。
对象是由属性和方法组成的
- 属性:事物的特征,在对象中用属性来表示
- 方法:事物的行为,在对象中用方法来表示
# 创建对象
利用对象自变量创建变量
var obj = {};
var obj = { uname: 'yuadh', age: 18, sex: 'man', sayHi: function(){ console.log('hi'); } }
1
2
3
4
5
6
7
8调用属性
- 对象名.属性名
- 对象名['属性名']
new Object
var obj = new Object(); obj.name = "yuadh"; obj.age = 18;
1
2
3构造函数
是一种特殊的函数,主要用来初始化对象,即对象成员赋值初值,它总与 new 运算符一起使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到整个函数里面
function Star(uname,age,sex){ this.name = uname; this.age = age; this.sex = sex; } var yuadh = new Start('yuadh',18,'man');
1
2
3
4
5
6注意 :
- 构造函数名字首字母要大写
- 构造函数不需要return
- 调用构造函数 必须使用 new
使用和普通方法一致
console.log(yuadh.name); console.log(yuadh['age']);
1
2
# 构造函数和对象的区别
像 java 的 类 和对象的区别
利用构造函数创建对象的过程称为 对象的实例化
# 遍历对象
var obj = {
name: 'yuadh',
age: 18,
sex= 'man',
fu: function(){}
}
for (var k in obj) {
console.log(k);//k 变量 输出 得到的是 属性名
console.log(obj[k]);// obj[k] 得到的是 属性值
}
2
3
4
5
6
7
8
9
10
for... in 对象遍历
# 内置对象
内置对象是指 js 语言自带的一些对象 , 这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能
如: Math Date Array String
# Math
- Math.PI 圆周率
- Math.max() 求最大值
- Math.abs() 求绝对值
- Math.floor() 向下取整
- Math.ceil() 向上取整
- Math.round() 四舍五入取整(.5按大的取)
更多查看 MDN 文档
# Math.random
random() 函数得到的是 [0,1) 的随机小数
查阅文档获取区间的随机数
function getRandom(min,max){
return Math.floor(Math.random()*(max-min+1))+1;
}
2
3
# Date
Date() 是构造函数 需要实例化 var Date = new Date();
三种创建方法
- var dete = new Date();
- var date = new Date(2019,10,1);//此创建方法
- var date = new Date('2019-10-1 8:8:8');
# 日期格式化
方法名 | 说明 | 代码 |
---|---|---|
getFullYear() | 获取当年 | date.getFullYear() |
getMonth() | 获取当月 | date.getMonth() |
getDate() | 获取当天日期 | date.getDate() |
getDay() | 获取星期几 | date.getDay() |
getHours() | 获取当前小时 | date.getHours() |
getMinutes() | 获取当前分钟 | date.getMinutes() |
getSeconds() | 获取当前秒钟 | date.getSeconds() |
# 时间戳
valueOf()
getTime()
距离 1970-1-1
日的总毫秒数
console.log(date.valueOf());
console.log(date.getTime());
2
var date = +new Date();
Date.now();
console.log(date);
console.log(Date.now());
2
# 倒计时案例
function countDown(time){
var nowTime = +new Date();//当前时间总毫秒数
var inputTime = +new Date();//用户输入的时间总毫秒数
var times = (inputTime-nowTime)/1000; //转换为秒数
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(time%60);
s = s<10? '0'+s:s;
}
2
3
4
5
6
7
8
9
10
11
12
13
# Array
创建的两种方式
- var arr = [1,2,3];
- var arr = new Array(2,3); 只写一个num是表示数组的长度
翻转数组
arr.reverse();
冒泡排序
arr.sort(); //此方法只会根据数字的第一个数排序
正确使用方法
var arr = [13,4,77,1,7];
arr.sort(function(a,b){
return a-b;//返回值sort方法会根据升序排序
or
return b-1;//返回值sort方法会根据降序排序
});
2
3
4
5
6
# 检测数组
instanceof 类型
console.log(arr instanceof Array);
if (arr instanceof Array){...}
1Array.isArray(arr)
H5新增
# 数组添加和删除元素
方法名 | 说明 | 返回值 |
---|---|---|
push(x1,x2...) | 末尾添加一个或多个元素,注意修改原数组 | 返回新的长度 |
pop() | 删除数组最后一个元素,把数组长度减1 | 返回删除的元素值 |
unshift(x1,x2...) | 向数组的开头添加一个或更多元素,注意修改原数组 | 返回新的长度 |
shift() | 删除数组的第一个元素,数组长度减1 | 返回删除的元素值 |
# 数组元素索引
indexOf(e)
lastIndexOf(e)
返回数组元素索引号方法,作用是返回该数组元素的索引号
找不到元素返回值 -1
//使用
str.indexOf('y');
str.indexOf('y',3);//从索引第3个元素开始,从开头开始查找
str.lastIndexOf('y');
str.lastIndexOf('y',3);//从索引倒数第三个元素开始,从后开始查找
2
3
4
5
# 数组转换字符串
方法名 | 说明 | 返回值 |
---|---|---|
toString() | 把数组转换为字符串,逗号分隔每一项 | 字符串 |
join('分隔符') | 方法用于把数组中的所有元素转换为一个字符串 | 字符串 |
# 其它数组方法
方法名 | 说明 | 返回值 |
---|---|---|
concat() | 连接两个或多个数组 不影响原数组 | 返回一个新的数组 |
slice() | 数组截取slice (begin,end) | 返回被截取项目的新数组 |
splice() | 数组删除splice ,第几个开始要删除的个数 | 返回被删除项目的新数组,会影响原数组 |
# 基本包装类型
为了方便操作基本数据类型,JavaScript 提供了三个特殊的引用类型 String Number Boolean
基本包装类型就是把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法
var str = 'yuadh';
//过程
var temp = new String('yuadh');
str = temp;
temp = null;
2
3
4
5
# 字符串
给字符串赋新值 会新开辟内存空间 旧的值会依旧在内存中
var str = '';
for (var i=0;i<1000000;i++){
str+= i;
}
console.log(str);
//会占用大量的内存空间 少用字符串拼接
2
3
4
5
6
# 根据位置返回字符
方法名 | 说明 | 使用 |
---|---|---|
charAt(index) | 返回指定位置的字符 | str.charAt(0) |
charCodeAt(index) | 获取指定位置除字符的ASCLL码 | str.charCodeAt(0) |
str[index] | 获取指定位置处字符 | str[0] |
# 根据字符返回位置
方法名 | 说明 |
---|---|
indxOf('x',num) | 返回指定内容在元字符串中的位置,如果找不到返回-1 |
lastIndexOf() | 从后往前找 |
计算字符串中出现最多的字符
var str = 'abcoefoxyozzopp';
var o = {};
for (var i=0;i<str.length;i++){
var chars = str.charAt(i);
if(o[chars]){
o[chars]++;
}else {
o[chars]=1;
}
}
var max = 0; var ch = '';
for (var k in o){
if(o[k] > max){
max=o[k];
ch = k;
}
}
console.log(max);
console.log(ch);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 替换字符和转换数组
方法名 | 说明 |
---|---|
replace('x','y); | 将需要替换的字符x替换成字符y |
split('x') | 将字符串根据分割符x转换为数组 |
# 其它字符串操作方法
方法名 | 说明 |
---|---|
concat(str1,str2) | concat()方法用于连接两个或多个字符串 |
substr(start,length) | 从start位置开始,取length个字符 |
slice(start,end) | 从start位置开始,截取到end位置 |
substring(start,end) | 从start位置开始,截取到end位置,作用和slice()相同但是不接受负值 |