一、 对象 1. 字面量创建对象 1 2 3 4 5 6 7 8 var obg = { uname : "张三疯" , age : 18 , sex : "男" , satHi : function ( ) { console .log ("hi~" ); }, };
注意:
里面的属性 或 方法 采用键值对的形式; 多个属性 或 方法 中间用 逗号隔开; 方法冒号后面跟的是 匿名函数; 调用对象属性 1 2 3 4 5 console .log (obj.uname ); console .log (obj["age" ]);
调用对象方法 2. 利用 new Object()
创建对象 向对象中填写属性 1 2 3 4 5 6 obj.uname = "张三疯" ; obj.age = 18 ; obj.sex = "男" ; obj.sayHi = function ( ) { console .log ("hi~" ); };
注意:
添加对象的属性和方法通过 等号 赋值的形式添加,属性和方法之间用分号; 3. 用构造函数创建 对象 构造 对象的 函数,叫做 构造函数
构造函数语法:
1 2 3 4 function 构造函数名() { this .属性 = 值; this .方法 = function ( ) {}; }
构造函数调用:
构造函数名称的 首字母 需要 大写; 构造函数中 不需要写 return 就可以返回值; 构造函数 属性之间必须用 ;
分号; 构造函数 调用 时 需要用 new 函数名
; 1 2 3 4 5 6 7 8 9 10 11 12 function Star (uname, age, sex, sang ) { this .uname = uname; this .age = age; this .sex = sex; this .sang = function (sang ) { console .log (sang); }; } var ldh = new Star ("刘德华" , 18 , "男" , "冰雨" );console .log (ldh.uname );
4. for in
遍历对象 语法:
输出所有的 键 或 值 输出所有的键:console.log(k);
输出所有的值:console.log(obj[k]);
1 2 3 4 5 6 7 8 9 10 11 12 13 var obj = { uname : "张三疯" , age : 18 , sex : "男" , satHi : function ( ) { console .log ("hi~" ); }, }; for (var k in obj) { console .log (k); console .log (obj[k]); }
二、 内置对象 1. Math 获取最大值 - Math.max
1 console .log (Math .max (1 , 2 , 3 , 4 , 5 ));
获取最小值 - Math.min
1 console .log (Math .max (1 , 2 , 3 , 4 , 5 ));
获取绝对值 - Math.abs
1 console .log (Math .abs (5 ));
向下取整 - Math.floor
1 console .log (Math .floor (5.2 ));
向上取整 - Math.ceil
1 console .log (Math .ceil (5.2 ));
四舍五入 - Math.round ( 出现 .5 时,向大取值)
1 2 console .log (Math .round (5.5 )); console .log (Math .round (5.2 ));
2. Math.random (随机小数) 随机整数 1 2 3 4 5 function getRandom (min, max ) { return Math .floor (Math .random () * (max - min + 1 )) + min; } console .log (getRandom (1 , 10 ));
猜数字案例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 function getRandom (min, max ) { return Math .floor (Math .random () * (max - min + 1 )) + min; } var random = console .log (getRandom (1 , 10 ));while (true ) { var num = prompt ("请猜测1~10之间的数字。" ); if (num > random) { alert ("你输入的数字过大。" ); } else if (num < random) { alert ("你输入的数字过小。" ); } else { alert ("恭喜你,答对了" ); break ; } }
3. 时间对象 - date date 是一个构造函数,需要用 new
创建
无参数:返回系统的当前时间
1 2 3 var time = new Date ();console .log (time);
有参数 常用参数写法:
数字型:2020, 11, 28
字符串型: 2021-12-8 17:18:50
1 var time = new Date (`2021-12-8 17:18:50` );
日期格式化 方法名 说明 obj.getFullYear() 获取年份 obj.getMonth() 获取月份(0-11) obj.getDate() 获取当前日期 obj.getDay() 获取星期几(星期日 0~星期六 6) obj.getHours() 获取当前小时 obj.getMinutes() 获取当前分钟 obj.getSeconds() 获取当前秒
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 function myDate ( ) { var day = [ "星期日" , "星期一" , "星期二" , "星期三" , "星期四" , "星期五" , "星期六" , ]; var date = new Date (); var Y = date.getFullYear (); var M = date.getMonth (); var D = date.getDate (); var d = date.getDay (); d = day[d]; var h = date.getHours (); h = h < 10 ? "0" + h : h; var m = date.getMinutes (); m = m < 10 ? "0" + m : m; var s = date.getSeconds (); s = s < 10 ? "0" + s : s; return Y + "年" + M + "月" + D + "日 " + d + " " + h + ":" + m + ":" + s; } var a = myDate ();console .log (a);
获取总毫秒数 当前时间 距离 1970 年 1 月 1 日 的毫秒数
通过 valueOf 、 getTime
获取
1 2 3 4 var date = new Date ();console .log (date.valueOf ());console .log (date.getTime ());
通过 +
获取
1 2 3 var date = +new Datte ();console .log (date);
通过 Date.now
获取
1 console .log (Date .now ());
毫秒 转 天、时、分、秒
公式 时间 parseInt(总秒数/60/60/24); 天数 parseInt(总秒数/60/60%24); 小时 parseInt(总秒数/60%60); 分钟 parseInt(总秒数%60); 秒数
倒计时案例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 function conutDown (time ) { var nowTime = +new Date (); var inputTime = +new Date (time); 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 (times % 60 ); s = s < 10 ? "0" + s : s; return d + "天" + h + "时" + m + "分" + s + "秒" ; } var date = conutDown ("2021-12-8 19:00:00" );console .log (date);
三、数组对象 1. 判断是否为数组 使用 运算符 检测 instanceof
1 2 var arr = [];console .log (arr instanceof Array );
Array.isArray(参数)
1 2 var arr = [];console .log (Array .isArray (arr));
2. 添加 删除 数组元素 方法名 说明 返回值 push(参数 1…) 末尾添加一个或多个元素, 会修改原数组 返回新数组的长度 pop() 删除数字最后一个元素,把数组长度减 1 无参数、修改原数组 返回它删除的元素值 unshift(参数 1…) 末尾添加一个或多个元素, 会修改原数组 返回新数组的长度 shift() 删除数组的第一个元素,数组长度减 1 无参数、修改原数组 并返回第一个元素的值
添加元素 1 2 3 4 var arr = [1 , 2 , 3 , 4 ];console .log (arr.push ("hello" , "sorry" )); console .log (arr);
1 2 3 4 var arr = [1 , 2 , 3 , 4 ];console .log (arr.unshift ("hello" , "sorry" )); console .log (arr);
删除元素
1 2 3 4 var arr = ["hello" , "sorry" , 1 , 2 , 3 , 4 ];console .log (arr.pop ()); console .log (arr);
1 2 3 4 var arr = ["hello" , "sorry" , 1 , 2 , 3 , 4 ];console .log (arr.shift ()); console .log (arr);
3. 数组排序 方法名 说明 是否修改原数组 reverse() 颠倒数组中元素的顺序,无参数 改变原数组 sort() 对数组的元素进行排序(只能正对个位数排序) 改变原数组
1 2 3 var arr = ["hello" , "sorry" , 1 , 2 , 3 , 4 ];console .log (arr.reverse ());
对 sort 强化
1 2 3 var arr = ["hello" , "sorry" , 11 , 22 , 33 , 21 , 8 , 7 ];console .log (arr.sort ());
1 2 3 4 5 6 7 var arr = ["hello" , "sorry" , 11 , 22 , 33 , 21 , 8 , 7 ];arr.sort (function (a, b ) { return a - b; }); console .log (arr);
4. 数组索引方法 方法名 说明 返回值 indexOf() 数组中查找指定元素的第一个索引 存在就返回索引号,不存在返回 -1 lastIndexOf() 数组中查找指定元素的最后一个索引 存在就返回索引号,不存在返回 -1
indexOf
: 指从前往后查找,lastIndexOf
: 指从后往前查找;
1 2 3 var arr = ["hello" , "sorry" , 11 , 22 , 33 , 21 , 8 , 7 ];console .log (arr.indexOf (11 ));
数字去重 1 2 3 4 5 6 7 8 9 10 11 12 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; } var arr = [0 , 11 , 3 , -1 , 4 , 7 , 11 , 22 , 33 , 21 , 8 , 7 ];console .log (unique (arr));
5. 数组转为字符串 方法名 说明 返回值 toString() 把数组转成字符串,逗号分隔每一项 返回一个字符串 join(‘分隔符’) 把数组转为字符串,自定义分隔符 返回一个字符串
1 2 3 var arr = ["你好" , "hello" , "你是谁" , "你在哪里" ];console .log (arr.toString ());
1 2 3 var arr = ["你好" , "hello" , "你是谁" , "你在哪里" ];console .log (arr.join (" " ));
四、字符串对象 基本包装类型: 把简单数据类型 包装成为了 复杂数据类型
1. 根据字符返回位置 方法名 说明 indexOf(‘要查找的字符’, [开始位置]) 返回指定内容在原字符串中的位置, 如果找不到就返回 -1,开始位置时 index 索引号 lastIndexOf() 从后往前找,只找第一个匹配的
1 2 3 4 var str = "改革春风吹满春地" ;console .log (str.indexOf ("春" )); console .log (str.indexOf ("春" , [3 ]));
1 2 3 var str = "改革春风吹满吹地" ;console .log (str.lastIndexOf ("吹" ));
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 var str = "abcoefoxyozzopp" ;var arr = [];var num = 0 ;while (true ) { if (str.indexOf ("o" , [num]) != -1 ) { var res = str.indexOf ("o" , [num]); arr.push (res); num = res + 1 ; } else { break ; } } console .log (arr);
2. 根据位置返回字符 方法名 说明 案例 charAt(index) 根据下标返回字符 str.charAt(0) x) 根据下标返回 ASCII 码 str.charCodeAt(0) str(index) 根据下标返回字符 和 charAt()
1 2 3 var str = "abcoefoxyozzopp" ;console .log (str.charAt (4 ));
3. 字符串操作方法 方法名 说明 concat(str1,str2…) 拼接多个字符串 substr(start,length) 从下标位置开始,截取 length 长度 slice(start,end) 从下标位置开始,截取到 end 位置,end 位置不截取 substring(start,end) 从下标位置开始,截取到 end 位置,end 位置不截取 等同于 slice ,但不接收负值
1 2 3 var str = "天王盖地虎,宝塔镇河妖" ;console .log (str.substr (4 , 3 ));
4. 字符串 替换 与 分割 replace
:替换字符串
1 2 3 var str = "天王盖地虎,宝塔镇河妖" ;console .log (str.replace ("地虎" , "老猫" ));
split
: 分割字符串
1 2 3 var str = "天王盖地虎,宝塔镇河妖" ;console .log (str.split ("," ));