JavaScript内置对象

1.内置对象

  • JavaScript中的对象分为三种:自定义对象、内置对象、浏览器对象
  • 前面两种对象是JS基础内容,属于ECMAScript;第三个浏览器对象属于JS独有的
  • 内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是额最基本而必要的功能(属性和方法)
  • 内置对象最大的优点就是帮助我们快速开发
  • JavaScript提供了多个内置对象:Math、DATE、Array、String等

2. 查文档

2.1 MDN

 MDN:https://developer.mozilla.org/zh-CN/

2.2 如何学习对象中的方法

 

 3.Math对象

<script>
        // Math数学对象 不是一个构造函数 所以不需要new来调用 直接使用里面的属性和方法即可
        console.log(Math.PI);  //3.141592653589793
        console.log(Math.max(1, 99, 3));  //99
        console.log(Math.max(1, 99, '郭老师')); //NaN
        console.log(Math.max());  //-Infinity
    </script>

案例:封装自己的数学对象

利用对象封装自己的数学对象 里面有PI、最大值和最小值

<script>
        var myMath = {
            PI: 3.1415926,
            getMax: function () {
                var max = arguments[0];
                for (var i = 0; i < arguments.length; i++) {
                    max = max > arguments[i] ? max : arguments[i];
                }
                return max;
            },
            getMin: function () {
                var min = arguments[0];
                for (var i = 0; i < arguments.length; i++) {
                    min = min < arguments[i] ? min : arguments[i];
                }
                return min;
            }
        }
        console.log(myMath.PI);  //3.1415926
        console.log(myMath.getMax(1, 5, 9));  //9
        console.log(myMath.getMin(1, 5, 9));  //1
    </script>

 3.1 Math概述

Math对象不是构造函数,它具有数学常数和函数的属性和方法,跟数学相关的运算(求绝对值,取整,最大值等)可以使用Math中的成员

Math.PI    //圆周率
Math.floor()  //向下取整
Math.ceil()  //向上取整
Math.round() //四舍五入版 就近取整 注意-3.5 结果是-3
Math.abs()  //绝对值
Math.max()/Math.min()  //求最大值和最小值

<script>
        // 1.绝对值
        console.log(Math.abs(1));// 1
        console.log(Math.abs(-1)); // 1
        console.log(Math.abs('-1')); // 1 隐式转换
        console.log(Math.abs('pink')); // NaN

        // 2.三个取整方法
        // (1)Math.floor() 地板 往小了取
        console.log(Math.floor(1.1)); // 1
        console.log(Math.floor(1.9)); // 1
        console.log(Math.floor(-1.1)); // -2
        console.log(Math.floor(-1.9)); //-2
        // (2)Math.ceil() 天花板 往大了取
        console.log(Math.ceil(1.1)); // 2
        console.log(Math.ceil(1.9)); // 2
        console.log(Math.ceil(-1.1)); // -1
        console.log(Math.ceil(-1.9)); // -1
        // (3)Math.round() 四舍五入 其他数字都是四舍五入 但是.5特殊 它往大了取
        console.log(Math.round(1.1)); // 1
        console.log(Math.round(1.5)); // 2
        console.log(Math.round(1.9)); // 2
        console.log(Math.round(-1, 1)); // -1
        console.log(Math.round(-1.5)); // -1
    </script>

3.2 随机数方法 random()

<script>
        // 1.Math对象随机数方法 random() 返回一个随机的小数 0<=x<1
        // 2.这个方法里面不跟参数
        console.log(Math.random());

        // 3.想得到两个数之间的随机整数,并且包含这两个整数
        // Math.floor(Math.random() * (max - min + 1)) + min;
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min; 
        }
        console.log(getRandom(1, 19));

        // 4.随机点名
        var arr = ['张三', '张三丰', '李四', '李思思'];
        console.log(arr[getRandom(0, arr.length - 1)]);
    </script>

 案例:猜数字游戏

 

<script>
        function getRandom(min, max) {
        return Math.floor(Math.random() * (max - min + 1)) + min;         }
        var random = getRandom(1, 10);
        while (true) {
            var num = prompt('请猜一个1到10的数');
            if (num < random) {
                alert('你猜小了');
            } else if (num > random) {
                alert('你猜大了');
            } else {
                alert('你猜对了');
                break;
            }
        }
    </script>
<script>
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min; 
        }
        var random = getRandom(1, 10);
        var i = 0;
        while (i < 3) {
            var num = prompt('请猜一个1到10的数,你有3次机会');
            if (num < random) {
                alert('你猜小了');
            } else if (num > random) {
                alert('你猜大了');
            } else {
                alert('你猜对了');
                break;
            }
            i++;
        }

    </script>

4.日期对象

4.1 Date概述

  • Date对象和Math对象不一样,他是一个构造函数,所以我们需要实例化之后才能使用
  • Date实例用来处理日期和时间
<script>
        // Date()日期对象 是一个构造函数 必须使用new 来调用创建日期对象
        // 1.使用Date 如果没有参数 返回当前系统的当前时间
        var date = new Date();
        console.log(date);
        // 2.参数常用写法 数字型 2019,1o,01 或者是字符串型 '2019-10-01'
        var date1 = new Date(2019, 10, 1);
        console.log(date1); //返回的是11月不是10月
        var date2 = new Date('2019-10-1');
        console.log(date2);
    </script>

 4.2 Date()方法的使用

1.获取当前时间必须实例化

 2.Date()构造函数的参数

如果括号里面有时间,就返回参数里面的时间,例如日期格式字符串为'2019-5-1',可以写成new Date('2019-5-1')或者new Date('2019/5/1')

4.3 日期格式化

我们想要2019-8-8 8:8:8 格式的日期怎么办?

需要获取日期指定的部分,所以我们要手动的得到这种格式

<script>
        var date = new Date();
        console.log(date.getFullYear()); // 2022 返回当前日期的年
        console.log(date.getMonth() + 1); //4 月份 返回的月份少1  所以要+1
        console.log(date.getDate()); //16 返回当前的日期
        console.log(date.getDay()); //6 周一返回的是1 周六返回的是6 周日返回的是0

        // 要写一个2022年4月16日 星期六
        var year = date.getFullYear();
        var month = date.getMonth() + 1;
        var dates = date.getDate();
        var day = date.getDay();
        var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
        console.log('今天是:' + year + '年' + month + '月' + dates + '日 ' + arr[day]);
    </script>

 

<script>
        var date = new Date();
        console.log(date.getHours());
        console.log(date.getMinutes());
        console.log(date.getSeconds());

        // 要求封装一个函数返回当前的时分秒 格式:08:08:08
        var time = new Date();
        function getTimer() {
            var h = time.getHours();
            h = h < 10 ? '0' + h : h;
            var m = time.getMinutes();
            m = m < 10 ? '0' + m : m;
            var s = time.getSeconds();
            s = s < 10 ? '0' + s : s;
            return h + ':' + m + ':' + s
        }
        console.log(getTime());
    </script>

4.4 获取日期的总的毫秒形式

<script>
        // 获得Date总的毫秒数(时间戳) 不是当前时间的毫秒数 而是距离1970年1月1号过了多少毫秒
        // 1.通过valueOf() getTime()
        var date = new Date();
        console.log(date.valueOf());
        console.log(date.getTime());

        // 2.简单的写法(最常用的写法)
        var date1 = +new Date(); //+new Date() 返回的就是总的毫秒数
        console.log(date1);

        // 3.H5新增的 获得总的毫秒数
        console.log(Date.now());
    </script>

案例:倒计时效果

 

<script>
        function countDown(time) {
            var nowTime = +new Date(); //返回的是当前时间总的毫秒数
            var inputTime = +new Date(time); //返回的是输入时间总的毫秒数
            var times = (inputTime - nowTime) / 1000; //times是剩余时间总的秒数
            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 + '秒';

        }
        console.log(countDown('2022-4-16 17:30:00'));
    </script>

5. 数组对象

5.1 数组对象的创建

创建数组对象的两种方式:

  • 字面量方式
  • new Array()
<script>
        // 创建数组的两种方式
        // 1.利用数组字面量
        var arr = [1, 2, 3];
        console.log(arr[0]);

        // 2.利用new Array()
        // var arr1 = new Array(); //创建了一个空的数组
        // var arr1 = new Array(2); //创建了一个长度为2的数组
        var arr1 = new Array(2, 3);
        console.log(arr1); //[2,3]
    </script>

 5.2 检测是否为数组

<script>
        // 翻转数组
        function reverse(arr) {
            if (arr instanceof Array) {
                var newArr = [];
                for (var i = arr.length - 1; i >= 0; i--) {
                    newArr[newArr.length] = arr[i];
                }
                return newArr;
            } else {
                return '请输入一个数组';
            }

        }
        console.log(reverse([1, 2, 3, 4])); // [4,3,2,1]
        console.log(reverse(1, 2, 3)); // []

        // 检测是否为数组
        // (1)instanceof 运算符 它可以用来检测是否为数组
        var arr = [];
        var obj = {};
        console.log(arr instanceof Array); // true
        console.log(obj instanceof Array); // false
        // (2)Array.isArray(参数); H5新增的方法 ie9以上版本支持
        console.log(Array.isArray(arr)); // true
        console.log(Array.isArray(obj)); // false
    </script>

5.3 添加删除数组元素的方法

方法名说明返回值
push(参数1....)末尾添加一个或多个元素,注意修改原数组并返回新的长度
pop()

删除数组最后一个元素,把数组长度减1 无参数、修改原数组

返回它删除的元素
unshift(参数1...)向数组的开头添加一个或更多元素,注意修改原数组并返回新的长度
shift()

删除数组的第一个元素,数组长度减1  无参数、修改原数组

并返回第一个元素
<script>
        // 添加删除数组元素方法
        // 1.push() 在数组的末尾 添加一个或者多个数组元素
        var arr = [1, 2, 3];
        console.log(arr.push(4, 'pink'));
        console.log(arr);

        // (1) push是可以给数组追加新的元素
        // (2)push()参数直接写数组元素就可以了
        // (3)push完毕之后,返回的结果是新数组长度
        // (4)原数组也会发生变化

        // 2.unshift在数组的开头 添加一个或多个数组元素
        console.log(arr.unshift('red', 'purple'));
        console.log(arr);
        // (1)unshift是可以给数组前面追加新的元素
        // (2)unshift()参数直接写数组元素就可以了
        // (3)unshift完毕之后,返回的结果是新数组长度
        // (4)原数组也会发生变化

        // 3.pop()可以删除数组的最后一个元素
        console.log(arr.pop());
        console.log(arr);
        // (1)pop可以删除数组的最后一个元素 一次只能删除一个元素
        // (2)pop()没有参数
        // (3)pop完毕之后,返回的结果是删除的那个元素
        // (4)原数组也会发生变化

        // 4.shift()可以删除数组的第一个元素
        console.log(arr.shift());
        console.log(arr);
        // (1)shift可以删除数组的第一个元素 一次只能删除一个元素
        // (2)shift()没有参数
        // (3)shift完毕之后,返回的结果是删除的那个元素
        // (4)原数组也会发生变化
    </script>

案例:筛选数组

 <script>
        var arr = [1500, 1200, 2000, 2100, 1800];
        var newArr = [];
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] < 2000) {
                newArr.push(arr[i]);
            }
        }
        console.log(newArr);
    </script>

 5.4 数组排序

方法名说明是否修改原数组
reverse()颠倒数组中元素的顺序,无参数该方法会改变原来的数组 返回新数组
sort()对数组的元素进行排序该方法会改变原来的数组 返回新数组
<script>
        // 数组排序
        // 1.翻转数组
        var arr = ['red', 'pink', 'blue'];
        arr.reverse();
        console.log(arr);
        // 2.数组排序(冒泡排序)
        var arr1 = [44, 13, 1, 7];
        // arr1.sort(); //sort()只能对个位数排序 如果位数多了会出错
        arr1.sort(function (a, b) {
            // return a - b; //升序的顺序排列
            return b - a; //降序的顺序排列
        })
        console.log(arr1);
    </script>

 5.5 数组索引方法

方法名说明返回值
indexOf()数组中查找给定元素的第一个索引如果存在返回索引号,如果不存在,则返回-1
lastIndexOf()在数组中的最后一个的索引如果存在返回索引号,如果不存在,则返回-1
 <script>
        var arr = ['red', 'yellow', 'blue', 'pink', 'blue'];
        console.log(arr.indexOf('blue')); // 2 只返回第一个
        console.log(arr.indexOf('green'));  // -1
        console.log(arr.lastIndexOf('blue')); //4
    </script>

案例:数组去重(重点)

 

<script>
        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;
        }
        console.log(unique(['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b']));
    </script>

5.6 数组转换为字符串

方法名说明返回值
toString()把数组转换成字符串,逗号分隔每一项返回一个字符串
join('分隔符')方法用于把数组中的所有元素转换为一个字符串返回一个字符串
<script>
        var arr = [1, 2, 3];
        console.log(arr.toString());

        var arr1 = ['red', 'yellow', 'pink'];
        console.log(arr1.join()); //默认使用逗号连接
        console.log(arr1.join('-'));
    </script>

 5.7 补充

6.字符串对象

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

 6.2 字符串的不可变

指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间

var str = 'abc';
str = 'hello';
//当重新给str赋值的时候,常量'abc'不会被修改,依然在内存中
//重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变
//由于字符串的不可变,在大量拼接字符串的时候会有效率问题

var str = '';
for (var i = 0; i< 1000000; i++) {
    str +=i;
}
console.log(str); // 这个结果需要花费大量时间来显示,因为需要不断地开辟新的空间

6.3 根据字符返回位置

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

方法名说明
indexOf('要查找的字符',[开始的位置])返回指定内容在元字符串中的位置,如果找不到就返回-1,开始的位置是index索引号
lastIndexOf()从后往前找,只找第一个匹配的
<script>
        // 字符串对象 根据字符返回位置 str.indexOf('要查找的字符',[起始的位置]);
        var str = '改革春风吹满地,春天在哪里';
        console.log(str.indexOf('春')); // 2
        console.log(str.indexOf('春', 3)); // 8 从索引号是3的位置开始往后查找
    </script>

案例:返回字符位置

 <script>
        var str = 'abcoefokfdaodaoa';
        var index = str.indexOf('o');
        var num = 0;
        while (index !== -1) {
            console.log(index);
            num++;
            index = str.indexOf('o', index + 1);
        }
        console.log('o出现的次数为:' + num);
    </script>

 

 var arr = ['red', 'blue', 'red', 'yellow', 'pink', 'red', 'purple'];
        var index = arr.indexOf('red');
        var num = 0;
        while (index !== -1) {
            console.log(index);
            num++;
            index = arr.indexOf('red', index + 1);
        }
        console.log('red出现的次数为:' + num);

 6.4 根据位置返回字符(重点)

方法名说明使用
charAt(index)返回指定位置的字符(index字符串的索引号)str.charAt(0)
charCodeAt(index)获取指定位置处字符的ASCII码(index索引号)str.charCodeAt(0)
字符串名[index]获取指定位置处字符HTML5,IE8+支持 和charAt()等效

<script>
        // 根据位置返回字符
        // 1.charAt(index)根据位置返回字符
        var str = 'andy';
        console.log(str.charAt(3));
        // 遍历所有字符
        for (var i = 0; i < str.length; i++) {
            console.log(str.charAt(i));
        }
    </script>

// 2.charCodeAt(index) 返回相应索引号的字符ASCII值 目的:判断用户按下了哪个键
 var str = 'andy'; 
 console.log(str.charCodeAt(0)); //97
 // 3.字符串名[index] h5新增的
 var astr = 'andy';
 console.log(astr[1]); //n

案例:返回字符位置

<script>
        // 有一个对象 来判断是否有该属性 对象['属性名']
        var o = {
            age: 18
        }
        if (o['age']) {
            console.log('里面有该属性');
        } else {
            console.log('没有该属性');
        }

    </script>

<script>
        var str = 'avdsfoasdoedg';
        var o = {};
        for (var i = 0; i < str.length; i++) {
            var chars = str.charAt(i);
            if (o[chars]) { //o[chars]得到的是属性值
                o[chars]++;
            } else {
                o[chars] = 1; // 相当于给o里的这个对象赋值1
            }
        }
        console.log(o);
        // 遍历对象 求最大值对应的字母
        var max = 0;
        var ch = '';
        for (var k in o) {
            // k得到的是属性名
            // o[k]得到的是属性值
            if (o[k] > max) {
                max = o[k];
                ch = k;
            }

        }
        console.log(max);
        console.log('最多的字符是:' + ch);//因为k是局部变量 出了for循环就不能使用
    </script>

 

 6.5 字符串操作方法(重点)

方法名说明
concat(str1,str2,str3,...)concat()方法用于连接两个或多个字符串。拼接字符串,等效于+,+更常用
substr(start,length)从start位置开始(索引号),length取的个数 
slice(start,end)从start位置开始,截取到end位置,end取不到(start end都是索引号)
substring(start,end)从start位置开始,截取到end位置,end取不到,基本和slice相同,但是不接受负值
<script>
        // 1.concat('字符串1','字符串2',...)
        var str = 'andy';
        console.log(str.concat('red')); //andyred

        // 2.substr('截取的起始位置','截取几个字符');
        var str1 = '改革春风吹满地';
        console.log(str1.substr(2, 2)); //吹风
    </script>
 <script>
        // 1.替换字符 replace('被替换的字符','替换为的字符'); 他只会替换第一个字符
        var str = 'andyandy';
        console.log(str.replace('a', 'b')); // bndyandy
        // 'dasdadaadas'把所有a替换成o
        var str1 = 'dasdadaadas';
        while (str1.indexOf('a') !== -1) {
            str1 = str1.replace('a', 'o');
        }
        console.log(str1); // dosdodoodos

        // 2.字符转换为数组 split('分隔符') 前面学过join把数组转换为字符
        var str2 = 'red,pink,blue';
        console.log(str2.split(',')); // ['red', 'pink', 'blue']
    </script>

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值