他的回复:
# ID: CShawn # 第六章笔记 ## 内置对象 JS对象:自定义对象、内置对象、浏览器对象。 内置对象是指JS自带的一些对象,提供了一些常用的或是最基本而必要的功能(属性和方法)。 ### Math对象 ``` Math.max(); // -Infinity Math.max(3, 'abc'); // NaN Math.abs(-1); // 1 Math.abs('-1'); // 1,隐式转换 Math.abs('abc'); // NaN Math.floor(1.9); // 1 Math.ceil(1.1); // 2 Math.round(1.4); // 1 Math.round(1.5); // 2 Math.round(-1.1); // -1 Math.round(-1.5); // -1,5较大,向上取整,为-1 Math.random(); // 此方法无参数,返回[0, 1)之间的随机值 // 自定义带参数的随机整数方法,返回[min, max]之间的随机整数 function getRandom(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } // 自定义带参数的随机整数方法,返回[min, max)之间的随机整数 function getRandom(min, max) { return Math.floor(Math.random() * (max - min)) + min; } ``` ### Data对象 ``` var date = new Date(); var date = new Date(2020, 10, 1); // 此构造方法,month从0开始,故此时为11月 var date = new Date(''2019-8-3 3:18:00'); date.getFullYear(); date.getMonth(); // month从0开始 date.getDate(); // 日期 date.getDay(); // 星期,起始周日为0 date.getHours(); // 24小时制 date.getMinutes(); date.getSeconds(); // 格式化时间 function getTime() { var time = new Date(); function getFormatted(num) { return num 10 ? '0' + num : num; } return time.getFullYear() + '-' + getFormatted(time.getMonth() + 1) + '-' + getFormatted(time.getDate()) + ' ' + getFormatted(time.getHours()) + ':' + getFormatted(time.getMinutes()) + ':' + getFormatted(time.getSeconds()); } //毫秒数获取方法: date.valueOf(); date.getTime(); var date2 = +new Date(); console.log(date2); // H5新增的 Date.now(); ``` 倒计时: ``` function countDown(date) { var diff = (new Date().getTime() - nowTime) / 1000; var days = parseInt(diff / 60 / 60 / 24); var hours = parseInt(diff / 60 / 60 % 24); var minutes = parseInt(diff / 60 % 60); var seconds = parseInt(diff % 60); return days + '天' + hours + '时' + minutes + '分' + seconds + '秒'; } ``` ### 数组 构造数组 ``` var array = new Array(); new Array(2); // 长度为2,值为undefined new Array(3, 4); // 长度为2, 值为3,4 ``` 判断是否为数组 ``` array instanceof Array Array.isArray(array); // H5新增, ie9以上支持 ``` 操作数组元素 ``` arr.push(4); // 向数组尾部添加元素4,返回数组长度 arr.push(4, 'abc'); // 向数组尾部添加4和'abc'两个元素,返回数组长度 arr.pop(); // 删除数组尾部的一个元素,返回被删除的元素 arr.shift(); // 删除数组头部的一个元素,返回被删除的元素 arr.unshift(4); // 在数组头部添加新元素,返回数组长度 ``` 筛选数组 ``` function filter() { var newArr = []; for (var i = 0; i arr.length; i++) { if(condition) { // newArr[newArr.length] = arr[i]; newArr.push(arr[i]); } } return newArr; } ``` 翻转数组: `arr.reverse();` 数组排序: ``` arr.sort(); // 按照字符串比较来排序,如:1,14,5,56 arr.sort(function(e1, e2) { return e1 - e2; // 升序 }); ``` 返回数组元素的索引 ``` arr.indexOf('a'); // 返回第一个元素的索引,不存在返回-1 arr.lastIndexOf('a'); // 返回最后一个元素的索引,不存在返回-1 ``` 数组转为字符串 ``` var arr = [1, 2, 3]; arr.toString(); // 1, 2, 3 arr.join(); // 1, 2, 3 arr.join('-'); // 1-2-3 ``` 数组拼接截取 ``` concat(); // 连接多个数组,返回一个新数组 slice(begin, end); // 从begin截取到end,返回被截取的新数组 splice(begin, count); // 从begin开始截取count个,返回被截取的原数组 ``` ### 字符串对象 #### 基本包装类型 为方便操作基本数据类型,JS提供了三个特殊的引用类型:String, Number, Boolean. 把简单数据类型包装成复杂数据类型,因而基本数据类型具有了一定属性和方法. ``` var str = 'abc'; console.log(str.length); // lengh属性为String包装类型的属性,过程如下: // 1. 生成临时变量,把简单类型包装为复杂数据类型 var temp = new String('abc'); // 2. 赋值给声明的字符变量 str = temp; // 3. 销毁临时变量 temp = null; ``` 字符串出现位置 ``` str.indexOf('a', index); // 从索引为index开始查找,返回第一个字符的索引,不存在返回-1 arr.lastIndexOf('a', index); // 从索引为index开始查找,返回最后一个字符的索引,不存在返回-1 ``` 根据位置返回字符: ``` str.charAt(index); str[index]; // H5新增,ie8+支持 ``` 根据位置返回字符的ASCII码: `str.charCodeAt(index);` 统计字符串中出现次数最多的字符 ``` var str = 'cabcdbacb'; var o = {}; for (var i = 0; i str.length; i++) { var ch = str.charAt(i); if (o[ch]) { o[ch] ++; } else { o[ch] = 1; } } var max = 0; var ch = ''; for (var k in o) { if (o[k] > max) { max = o[k]; ch = k; } } console.log('最多的字符是:' + ch + '出现' + max + '次'); ``` 拼接与截取 ``` str.concat(str1, str2, str3...); str.substr(index, count); substring(start, end); slice(start, end); ``` 字符串替换 ``` str.replace('a', 'b'); // 只替换第一个匹配的字符 // 全部替换 function replaceAll(str, oldStr, newStr) { while (str.indexOf(oldStr) !== -1) { str = str.replace(oleStr, newStr); } return str; } ``` 字符串转换为数组 ``` var str = 'a,b,c'; str.split(','); // 按逗号分割字符串 ``` 转换大小写 ``` str.toUpperCase(); str.toLowerCase(); ``` ### 简单类型与复杂类型 简单数据类型又叫基本数据类型、值类型 在存储时变量中存储的是值本身,string, number, boolean, undefined, null 复杂数据类型又叫引用类型,存储时变量中存储的是地址(引用),通过`new`关键字创建的对象(系统对象、自定义对象),如Object, Array, Date - 栈:由操作系统自动分配释放存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。简单数据类型存放在栈中。 - 堆:一般由用户分配释放,若不释放则由垃圾回收机制回收。复杂数据类型存放在堆中。