javascript-内置对象

内置对象:js语言自带的一些对象,这些对象供开发者使用,并提供一些常用的活是基本而必须的功能(属性和方法)

优点:快速开发
 
查文档
MDN/W3C
Math对象
        console.log(Math.PI);
        console.log(Math.max(1, 3, 99));//99
        console.log(Math.max(-1, -10));//-1
        console.log(Math.max(-1,10,'pink'));//NAN
//利用对象封装自己的数学对象,里面有pi最大值和最小值
        var myMath = {
            PI: 3.141592653,
            max: function () {
                var max = arguments[0];
                for (var i = 1; i < arguments.length; i++) {
                    if (arguments[i] > max) {
                        max = arguments[i];
                    }
                }
                return max;
            },
            min: function () {
                var min = arguments[0];
                for (var i = 1; i < arguments.length; i++) {
                    if (arguments[i] < min) {
                        min = arguments[i];
                    }
                }
                return min;
            }
        }
        console.log(myMath.PI);
        console.log(myMath.max(1, 3, 6));
        console.log(myMath.min(1, 3, 6));
//1.绝对值
        console.log(Math.abs(-1));
        console.log(Math.abs('-1'));//隐式转换 会把字符串-1转换为数字型
        //2.三个取整数的方法
        //(1)Math.floor()向下取整
        console.log(Math.floor(1.1));//1
        //(2)Math.ceil()向上取整
        console.log(Math.ceil(1.1));//2
        //(2)Math.round()四舍五入
        console.log(Math.round(1.1));//1
        console.log(Math.round(1.5));//2
        console.log(Math.round(-1.1));//1
        console.log(Math.round(-1.5));//-1
//Math对象随机数方法 random()返回一个随机的小数 
        //这个方法里面不跟参数
        console.log(Math.random());
        //得到两个数之间的随机整数,并包含这2个整数
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min;

        }
        console.log(getRandom(1, 10));
        //随机点名
        var arr = ['张三', 'zhangsanfeng', 'zhaosi', 'liunneg'];
        console.log(arr[getRandom(0, 3)]);
//猜数字游戏
        //1.随机生成1-10的整数
        //2.需要到猜到为止,所以需要循环
        //3.用while更好
        //4.核心算法if else if
        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 if (num == random) {
                alert('你猜对了');
                break;
            }

        }

日期对象

//构造函数,必使用new来调用创建
        var arr = new Array();//创建一个数组对象
        var obj = new Object();//创建一个对象用例
        //1.使用Date 如果没有参数 返回当前系统的当前时间
        var date = new Date();
        console.log(date);
        //2.参数常用的写法,数字型 2019,10,01 或者‘2019-10-1 8:8:8’
        var date1 = new Date(2019, 10, 1);
        console.log(date1);
        var date2 = new Date('2019-10-01 8:8:8');
        console.log(date2);

        var date = new Date();
        console.log(date.getFullYear());//返回当前日期年
        console.log(date.getMonth() + 1);//月份小一个月 月份从0-11
        console.log(date.getDate());
        console.log(date.getDay());//周日返回0.周一返回1
        //我们写一个格式为2019年5月1日 星期三
        var year = date.getFullYear();
        var month = date.getMonth() + 1;
        var dates = date.getDate();
        var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
        var day = date.getDay();
        console.log('今天是' + year + '年' + month + '月' + dates + '日' + arr[day]);

//格式化日期 时分秒
        var date = new Date();
        console.log(date.getHours());
        console.log(date.getMinutes());
        console.log(date.getSeconds());
        //封装一个函数返回当前的时分秒 格式08:08:08
        function getTime() {
            var time = new Date();
            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());
//获得Date总的毫秒数 不是当前时间的毫秒数,而是距离1970年1月1号过了多少毫秒
        //1.通过valueOf() getTime()
        var date = new Date();
        console.log(date.valueOf());
        console.log(date.getTime());
        //2.简单的写法
        var date1 = +new Date();
        console.log(date1);
        //3.H5新增获得
        console.log(Date.now());
//倒计时效果
        //1.用将来的时间减去现在的时间
        //2.用时间戳在做
        //3.把剩余时间总的毫秒数转换为天、时、分、秒
        function cutDown(time) {
            var nowTime = +new Date();//返回当前时间的总的毫秒数
            var inputTime = +new Date(time);//返回用户输入时间总的毫秒数
            var times = (inputTime - nowTime) / 1000;//times是剩余时间总的秒数
            var d = parseInt(times / 60 / 60 / 24);
            var h = parseInt(times / 60 / 60 % 24);//hour
            var m = parseInt(times / 60 % 60);//min
            var s = parseInt(times % 60);//miao
            return d + '天' + h + '时' + m + '分' + s + '秒';
        }
        console.log(cutDown(2022, 4, 1));

数组对象

//创建数组的方式
        //1.利用数组字面量
        var arr=[1,2,3];
        console.log(arr[0]);
        //2.利用new
        var arr1=new Array();//创建一个空的数组
        var arr2=new Array(2);//数组长度为2
        var arr3=new Array(2,3);//等价与[2,3]
 //检测是否为数组
        //(1)instanceof 运算符
        var arr = [];
        console.log(arr instanceof Array);
        //(2)Array.isArray(参数);H5新增方法
        console.log(Array.isArray(arr));

//添加和删除数组元素的方法
        //1.push()在数组的末尾添加一个或多个元素
        var arr = [1, 2, 3];
        arr.push(4, 'ppp');
        console.log(arr);
        //(1)push是可以给数组追加新的元素
        //(2)push参数直接写数组元素就可以了
        //(3)push完毕之后,返回的结果是新数组的长度
        //(4)原数组也会发生变化
        //2.unshift在我们数组的开头添加一个或者多个数组元素
        arr.unshift('red', 'pppp')
        console.log(arr);

        //3.pop()他可以删除最后一个元素
        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)愿数组发生变化
 //数组排序
        //1.翻转数组
        var arr = ['pink', 'red', 'blue']
        arr.reverse();
        console.log(arr);
        //2.数组排序(冒泡)
        var arr1 = [33, 4, 53, 1];
        arr1.sort(function (a, b) {
            // return a - b;//升序
            return b - a;//降序
        });
        console.log(arr1);
//数组索引
        //返回第一个满足条件的索引
        //如果找不到这个元素,则返回-1
        var arr = ['red', 'blue', 'green', 'black', 'blue'];
        console.log(arr.indexOf('blue'));//1
        console.log(arr.lastIndexOf('blue'));//4
//数组去重 ['c','a','z','a','x','a','x','c','b']
        //封装去重函数
        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 demo = unique(['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b']);
        console.log(demo);
 //数组转字符串
        //1.toString()将数组转换为字符串
        var arr = [1, 2, 3]
        console.log(arr.toString());
        //2.join(分隔符)
        console.log(arr.join());
        console.log(arr.join('-'));

字符串对象

//基本包装类型 String Number Boolean
        var str = 'andy';
        console.log(str.length);
        //对象才有属性和方法 复杂数据类型才有属性和方法
        //简单数据类型为什么会有length属性呢
        //基本包装类型:就是把简单数据类型包装成为了 复杂数据类型
        //(1)把简单数据类型包装为复杂数据类型
        var temp = new String('andy');
        //(2)把临时变量的值 给str
        str = temp;
        //(3)销毁临时变量
        temp = null;

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

//字符串对象 根据字符返回位置
        var str = '12345167';
        console.log(str.indexOf('1', 4));//从索引号4的位置开始往后查找
        //查找字符串中所有o出现的位置以及次数
        var str1 = 'abhdcodfrogfgoedfeo';
        var num = 0;
        var index = str1.indexOf('o');
        while (index !== -1) {
            console.log(index);
            num++;
            index = str1.indexOf('o', index + 1);

        }
        console.log('o出现的次数:' + num);
//根据位置返回字符
        //1.charAt(index)根据位置返回字符
        var str = 'andy';
        console.log(str.charAt(3));
        //遍历所有字符
        for (var i = 0; i < str.length; i++) {
            console.log(str.charAt(i));
        }
        //2.charCodeAt(index)返回相应索引号的字符ASCII值的目的:判断用户按下了那个键
        console.log(str.charCodeAt(0));//97
        //3.str[index] H5新增
        console.log(str[2]);
//统计字符串里面出现次数最多的元素
        //1.利用charAt()遍历这个字符串
        //2.把每个字符都存储给对象,如果对象没有该属性,就为1,如果存在就+1
        //3.遍历对象,得到最大值和该字符
        var str = 'abhdcodfrogfgoedfeo';
        var o = {};
        for (var i = 0; i < str.length; i++) {
            var chars = str.charAt(i);//chars是字符串的每一个字符
            if (o[chars]) {//o[chars]得到的是属性值
                o[chars]++;
            } else {
                o[chars] = 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);
//字符串操作方法
        //1.concat('str1','str2'.....)
        var str = 'andy';
        console.log(str.concat('red'));
        //2.substr('截取的起始位置','截取几个字符');
        var str1 = '改革经济抡大锤';
        console.log(str1.substr(2, 2));
//1.替换字符replace('被替换字符',‘替换字符')只会替换第一个字符
        var str = 'andy';
        console.log(str.replace('a', 'b'));
        //替换字符串里面的o
        var str1 = 'abhdcodfrogfgoedfeo';
        while (str1.indexOf('o') != -1) {
            str1 = str1.replace('o', '*');

        }
        console.log(str1);
        //2.字符串转换为数组 split('分隔符‘)  前面用join把数组转为字符串
        var str2 = 'red,pink,blue';
        console.log(str2.split(','));
简单类型和复杂类型 
简单类型:又称值类型,在存储的时变量中存储的是值本身,因此叫做值类型。string,number,boolean,undefined,null
存放在栈
 
复杂类型,:又称引用类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型,通过new关键字创建的对象(系统对象、自定义对象),如Object、Array、Date等
存放在堆(地址在栈,然后地址指向堆里面的数据)
posted @ 2022-03-17 17:15  终究还是避免不了遗憾  阅读(26)  评论(0编辑  收藏  举报