美文网首页前端JavaScript
复习笔记之内置对象

复习笔记之内置对象

作者: 晚月川 | 来源:发表于2020-03-30 22:19 被阅读0次

    内置对象

    JavaScript中的对象分为3种:自定义对象、内置对象、浏览器对象
    前两种对象是JS基础内容,属于ECMAScript;第三个浏览器对象是JS独有的(内置对象)
    内置对象是指JS语言自带的一些对象,这些对象供开发者使用,并提供一些常用的或是最基本而必要的功能(属性和方法)
    内置对象可以帮助我们快速开发
    JS常用的内置对象:Math数学函数对象、Date日期对象、Array数组对象、String字符串对象等

    查阅文档(如何学习对象中的方法)

    1. 学习一个内置对象的使用,只要学会其常用的成员的使用即可,可以用过MDN/W3C来查阅文档学习
    2. Mozilla开发者网络(MDN)提供了有关开放网络技术(Open Web)的信息,包括HTMLCSS和万维网及和HTML5应用的API
      步骤:查阅该方法功能;查看里面参数的意义和类型;查看返回值的意义和类型;通过demo进行测试……

    Math数学函数对象

    Math是一个内置对象,它具有数学常数和函数的属性和方法,不是一个函数对象

    console.log(Math.PI); // 一个属性,圆周率
    console.log(Math.max(1,22,57,95)); // 一组数字中的最大值
    console.log(Math.max()); // -Infinity
    console.log(Math.max(57,03,'呵呵')); // NaN
    // 取最大值,不传参返回值为-Infinity,如果有参数不能被转化为数值,则返回NaN
    
    // 绝对值
    Math.abs()
    // 取整
    Math.floor() // 向下取整 往最小了取值
    Math.ceil() // 向上取整 往最大了取值
    Math.round() // 四舍五入 特殊情况:负数中.5是往大了取值 例如-1.5取-1
    // 取0~1之间的随机小数
    Math.random() // 获取0~1(不包括1)之间的随机小数,每次获取的结果都不一样,括号里面不传参数 
    // 获取n~m之间的随机整数(不包含m)
    Math.floor(Math.random() * (m - n) + n)
    // 获取n~m之间的随机整数(包含m)
    Math.floor(Math.random() * (m - n + 1) + n)
    

    ========================

    // 案例:随机点名
     function getRandom(n, m) {
        return Math.floor(Math.random() * (m - n + 1) + n);
    }
    var arr = ['张三', '李四', '赵四', '张三风', '丁一', '赵五'];
    alert(arr[getRandom(0, arr.length-1)]);
    

    日期对象Date

    创建Date实例用来处理日期和时间,Date对象基于1970年1月1日(世界标准时间)起的毫秒数
    Date() 日期对象 是一个构造函数,必须使用new来调用创建日期对象

    var arr = new Array(); // 创建一个数组对象
    var obj = new Object(); // 创建一个对象实例
    var time = new Date();
    console.log(time);
    
    使用Date
    1. 如果没有参数,返回当前系统的当前时间
    2. 参数常用的写法:
      • 数字型 2020,03,29
      • 字符串型 '2020-03-29 11:14:13'
      var time1 = new Date(2020,03,29);
      console.log(time1); // Wed Apr 29 2020 00:00:00 GMT+0800 (中国标准时间) 比实际月份大一个月
      var time2 = new Date('2020-03-29 11:14:13');
      console.log(time2); // Sun Mar 29 2020 11:14:13 GMT+0800 (中国标准时间)
      
    日期格式化
    方法名 说明 代码
    getFullYear() 获取当前年份 time.getFullYear()
    getMonth() 获取当月(0~11) time.getMonth()
    getDate() 获取当天日期 time.getDate()
    getDay() 获取星期几(周日0到周六6) time.getDay()
    getHours() 获取当前小时 time.getHours()
    getMinutes() 获取当前分钟 time.getMinutes()
    getSeconds() 获取当前秒钟 time.getSeconds()
    var time = new Date();
    console.log(time.getFullYear()); // 返回当前年份
    console.log(time.getMonth() + 1); // 返回当前月份,如果不加一返回结果比现在小一月
    console.log(time.getDay()); // 今天周几(周日会返回零)
    

    ================

    // 案例:获取当前时间
    var time = new Date();
    var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
    var year = time.getFullYear(),
        month = time.getMonth() + 1,
        date = time.getDate(),
        hours = time.getHours(),
        minutes = time.getMinutes(),
        seconds = time.getSeconds(),
        day = time.getDay();
    alert('今天是:' + year + '年' + month + '月' + date + '日' + hours + '点' + minutes + '分' + seconds + '秒 ' + arr[day]);
    
    获取日期的总的毫秒形式

    Date对象是基于1970年1月1日(世界标准时间)起的毫秒数(时间戳)
    用毫秒数来计算时间更加精确

    1. valueOf()
    2. getTime()
    var date = newDate();
    console.log(date.valueOf()); // 获取现在时间距离1970年1月1日的总的毫秒数
    console.log(date.getTime());
    // 简单写法(最常用的写法)
    var date1 = +new Date(); // +new Date() 返回的就是总的毫秒数
    console.log(date1);
    // H5新增的 获取总的毫秒数
    console.log(Date.now());
    

    数组对象

    创建数组的两种方式
    1. 字面量方式
    // var arr = [];  // 创建一个空数组
    var arr = [1,2,3,4,5,6];
    console.log(arr[5]);
    
    1. new Array()
    // var arr = new Array();  // 创建一个空数组
    // var arr = new Array(2); // 这个2代表数组的长度,里面有两个空的数组元素
    var arr = new Array(2,3); // 等价于[2,3]  这样写代表里面有两个数组元素 2和3
    console.log(arr);
    
    检测是否为数组
    • instanceof 运算符 可以检测是否为数组
    var arr = [];
    var obj = {};
    console.log(arr instanceof Array); //=>true
    console.log(obj instanceof Array); //=>false
    
    • Array.isArray() 检测是否为数组

    如果检测对象是Array就返回true,否则返回false(H5新增方法 IE9以上才支持)

    • instanceofisArray的区别
      当检测Array实例时,Array.isArray优先于instanceof,因为Array.isArray能检测iframes
    添加删除数组的方式
    方法名 说明 返回值 是否修改原数组
    push(参数1...) 末尾添加一个或多个元素 并返回新的长度
    pop() 删除数组中最后一个元素,把数组长度减一,无参数 返回它删除的元素的值
    unshift(参数1...) 向数组开头添加一个或多个元素 并返回新的长度
    shift() 删除数组的第一个元素,数组长度减一,无参数 返回第一个元素的值
    数组排序
    方法名 说明 是否修改原数组
    reverse() 颠倒数组中元素的顺序 该方法会改变原来的数组 返回新数组
    sort() 对数组的元素进行排序 该方法会改变原来的数组 返回新数组
    1. 翻转数组
    var arr = [1,2,3];
    arr.reverse();
    console.log(arr);
    
    1. 数组排序(冒泡排序)
    var arr = [3,4,7,9,5,1];
    arr.sort();
    console.log(arr);
    

    sort方法中如果不传递参数,是无法处理10以上数字排序的

    sort((a,b) => a - b) //=>升序排列
    sort((a,b) => b - a) //=>降序排列
    
    // 例如:
    var arr = [33,334,72,95,57,122];
    arr.sort((a,b) => a - b);
    console.log(arr);
    
    数组索引方法
    方法名 说明 返回值
    indexOf 指定元素在数组中的第一个索引 如果存在,返回索引号,不存在就返回-1
    lastIndexOf 指定元素在数组中最后一个的索引 如果存在,返回索引号,不存在就返回-1
    数组转化为字符串
    方法名 说明 返回值
    toString() 把数组转换为字符串,逗号分隔每一项 返回一个字符串
    join('分隔符') 方法用于把数组中的所有元素转化为字符串 返回一个字符串
    实现数组中的增删改查
    方法名 说明 返回值
    splice(n,m) 实现数组的增删改,从数组索引n开始,删除m个元素,m不写就是删到末尾,把删除的内容进行存储 返回的是新数组
    silce(n,m) 实现数组的查询,从索引n开始,查找到索引m处(不包含m),m不写查找到数组末尾 查找到的内容以新数组的形式返回
    • splice(n,m):实现数组的增删改,从数组索引n开始,删除m个元素,m不写就是删除到末尾
      • splice(n,m,x):从数组索引n开始删除m个元素,用x替换被删除的元素,返回结果是一个数组,存储删除的内容
      • splice(n,0,x1,x2...):从索引n开始,一个都不删除,返回结果是一个空字符串,把x1或更多值插入到索引n前面
      • splice(0):基于这种方法可以清空一个数组,把原始数组中的内容以新数组的方式存储起来(有点类似于数组的克隆:把原来数组克隆一份一摸一样的给新数组)
    • slice(n,m):实现数组的查询
      • n为零,m不写可以理解为把原始数组中的每一项都查找到,以新数组返回,实现出数组的克隆,得到的新数组和原始数组是两个不同的数组(两个不同的堆),但是堆中存储的内容是一样的
    数组对象中方法的补充
    • concat 实现数组的拼接:把多个数组(或多个值)最后拼接为一个数组,原始数组不会变,返回结果是拼接后的新数组
    • includes 验证数组中是否包含这一项:包含返回true,不包含返回false
    • forEach 遍历数组中的每一项:forEach([函数])遍历数组中的每一项,数组中有多少项,函数就会被相继执行多少次
    • mapforEach是不支持返回值的,而map可以在forEach的基础上支持返回值,把原来数组中每一项的值替换为新值,最后存储在一个新数组中,但是原始数组是不变的

    字符串对象

    基本包装类型:把基本数据类型包装成复杂数据类型(引用数据类型)

    // 基本包装类型
    var str = 'andy';
    console.log(str.length);
    // 生成临时变量,把简单数据类型包装为复杂数据类型
    var temp = new String('andy');
    // 把临时变量赋值给 str
    str = temp;
    // 销毁临时变量
    temp = null;
    

    为了方便操作基本数据类型,JavaScript还提供了三个特殊的引用数据类型:Number、String和Boolean

    字符串的不可变

    指的是里面的值不可变,虽然看上去改变内容,但其实是地址变了,内存中新开辟了一个内存空间
    不要大量拼接字符串

    字符串中的内置方法

    字符串中所有的方法都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串

    方法名 说明
    indexOf('要查找的字符',开始的位置) 返回指定内容在字符串中的位置,如果找不到就返回-1,开始的位置是index索引号
    lastIndexOf 从后往前找,只找第一个匹配的
    • 格式:indexOf('要查找的字符',[起始的位置])
    • 格式:lastIndexOf('要查找的字符',[起始的位置])
    根据位置返回字符
    方法名(index) 说明 使用
    charAt(index) 返回指定位置的字符 arr.charAt(index)
    charCodeAt(index) 获取指定位置处字符的ASCII码 arr.charCodeAt(index)
    str[index] 获取指定位置处字符 HTML5,IE8+支持 和charAt()等效

    charCodeAt:根据相应索引号字符的ASCII值,判断用户按下了哪个键

    字符串中的操作方法
    方法名 说明
    concat(str1,str2,str3...) concat()方法用于拼接两个或多个字符串。拼接字符串,等价于+,+更常用
    substr(n,m) 从索引n开始,截取m个
    slice(n,m) 从索引n开始,截取到索引m,不包含m
    substring(n,m) 从索引n开始,截取到索引m,不包含m 基本和slice相同,但是不接受负值
    字符串替换
    • 替换字符 replace('被替换的字符','替换为的字符') 它只会替换第一个字符
    var str = 'apple';
    console.log(str.replace('p','b'));
    // 有一个字符串'abcoefoxyozzopp'要求把里面所有的o替换为 *
    var str1 = 'abcoefoxyozzopp';
    while (str1.indexOf('o') !== -1) {
        str1 = str1.replace('o' , '*');
    }
    console.log(str1);
    
    字符串转化为数组

    split字符串转化为数组 split('分隔符') join把数组转化为字符串

    var str = 'red, pink, blue';
    console.log(str.split(',')); //=>["red","pink","blue"]
    
    字符串方法补充
    • toUpperCase() 转化为大写
    • toLowerCase() 转化为小写

    相关文章

      网友评论

        本文标题:复习笔记之内置对象

        本文链接:https://www.haomeiwen.com/subject/chwbuhtx.html