JS笔记(七)内置对象、基本包数据类型

js学习中有三种对象
(1)内置对象----js系统自带的对象
(2)自定义对象----自己定义的构造函数创建的对象
(3)浏览器提供的对象----BOM、DOM
 
验证是不是对象方法:
console.log(Array  instanceof  Object); //Array 系统的对象
var  obj = {};
console.log(obj  instanceof Object);
 
 
1、内置对象
 
        实例对象:通过构造函数创建出来,实例化的对象,需要var xx = new Person();
        静态对象:不需要创建,直接就是一个对象,方法(静态方法)直接通过这个对象名字调用
        实例方法必须通过实例对象调用
        静态方法必须通过大写的对象调用
 
 
(1)Math对象
    (在MDN文档上面查找,属性/方法)
    math是一个内置对象,但不是一个函数对象,有数学常数和函数的属性和方法,都是静态的。
    使用:Math.abs(null)--------0;
                Math.PI---- π---
                Math.E---- 常熟的底数
                Math.abs(值)---- 绝对值
                Math.ceil(值)---- 向上取整
                Math.floor(值)---- 向下取整
                Math.pow(2,4)---- 2的4次幂
                Math.random()*5---- [0~5)直接产生随机数
                Math.random()*5+1---- [1~6)直接产生随机数
 
例1:
    var  result  =  Math.max(10,20,30,40);
    console.log(result);
 
    //如果要自己定义一个对象,实现系统的max方法
    function MyMath(){
        this.getMax = function(){
            var  max = arguments[0];
            for(var i=0; i<argument.length;i++){
                if(max < argument [i] )[
                    max = argument[i];
                }
            }
            return max;
        };
    }
    var mt = new MyMath();
    var result = mt.getMax(10,20,30,40,50);
    console.log(result);
 
例2:随机产生一个十六进制的颜色值,封装成一个函数
    function getColor(){
        var str = '#';
        //一个十六进制的值的数组
        var  arr = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];
        for(var i=0;i<6;i++){
            //产生的每个随机数都是一个索引,根据索引找到数组中对应的值,拼接到一起
            var num = parseTnt(Math.random()*16);
            str += arr[num];
        }
        return str;
    }
    
    //页面加载的事件
    window.onload = function(){
        //在文档中通过id属性的值查找这个元素(标签),设置该标签的背景颜色
        document.getElementById("dv").style.backgroundColor = getColor();
    }
    <div id="dv"></div>
 
 
 
(2)Date对象
    用来处理日期和时间,Date对象基于1970年1月1日(世界标准时间)起的毫秒数
    var dt = new Date();
    var dt = new Date("2018-08-08");
    var dt = new Date("2018/08/08");
    var dt = Date.now(); //毫秒数,1970年1月1日到现在的毫秒数
 
例3:
    var dt = new Date();
    //获取年份
    console.log(dt.getFullYear());
    //获取月份
    console.log(dt.getMonth()); //从0开始的
    //获取日期
    console.log(dt.getDate());
    //获取小时
    console.log(dt.getHours());
    //获取分钟
    console.log(dt.getMinutes());
    //获取秒
    console.log(dt.getSeconds());
    //获取星期
    console.log(dt.getDay()); //从0开始
 
    //转成字符串
    console.log(dt.toString());
    console.log(dt.toDateString()); //英文格式--日期
    console.log(dt.toLocalDateString()); //数字格式 --日期
    console.log(dt.toTimeString()); //小时分钟秒
    console.log(dt.toLocalTimeString()); //小时分钟秒
    console.log(dt.valueOf()); //毫秒值
    var dt = +new Date(); //一种特殊写法,不支持h5的浏览器可以用这种写法
 
 
例4:格式化后的指定格式的日期和时间---封装一个函数
    function  getDate(dt){
        //获取年
        var  year = dt.getFullYear();
        //获取月
        var  month= dt.getMonth() +1 ;
        //获取日
        var  day= dt.getDate();
        //获取小时
        var  hour= dt.getHours();
        //获取分钟
        var  minute= dt.getMinutes();
        //获取秒
        var  second= dt.getSeconds();
 
        month = month < 10 ? "0" + month : month;
        day= day< 10 ? "0" + day : day;
        hour= hour< 10 ? "0" + hour : hour;
        minute = minute< 10 ? "0" + minute : minute;
        second= second< 10 ? "0" + second : second;
 
        return  year + "年" + month + “月”+ day+ "日" + hour +":" + minute+":" +second;
    }
    console.log(getDate(new Date()));
 
 
 
 
(3)String对象(字符串对象大写,小写的是数据类型)
 
字符串:string  str = "hello"; //字符串必须用双引号
字符:char ch = 'h'; //字符必须用单引号,值只有一个
 
//字符串可以看成多个字符组合成
//js中无论单引号还是双引号都是字符串
//字符串可看成是数组,可用for循环遍历
//字符串有不可变性,值不可变,但可重新赋值
    原来的值没改,但是指向改变了。
 
 
(实例方法---必须通过new的方式创建的对象(实例对象)来调用的方法
    静态方法---直接通过大写的构造函数的名字调用的方法(直接通过大写的对象名字调用))
 
 
字符串里的常用属性:
    String.length---长度
    String.charAt(index)---返回字符串中指定的第index个字符
    String.fromCharCode(index,index,index)---返回指定的Unocode值序列创建的字符串,对应Ascii表
    String.concat("字符串","字符串")---将一个或多个字符串与原字符串连接合并,再返回
    String.indexOf("好",5)---("要找的字符串","从第index位置开始"),返回的是传入的字符串的位置
    String.LastIndexOf("好",5)---和indexOf()一样,这个是从后面往回找,indexOf()是从前到后,否返-1
    String.relace("String1","String2")---String2替换String1
    String.slice(5,10)---提取字符串,从5位置开始,到10位置结束,但没有10
 
    String.split("|",index)---从|这个位置切割字符串,index是留几个的意思
            var  str = "乔峰|小明|小苏|小陈";
            var  arr = str.split("|");
            for(var i = 0;i<arr.length;i++){
                console.log(arr[i]);
            }
 
    String.substr(5,5);---切割,(开始切割的位置,个数)
    String.sybstring(5,5)----(开始位置,结束为止),不包含结束的位置的字符
    String.toLocaleLowerCase()---转小写
    String.toLocaleUpperCase()---转大写
    String.toLowerCase()---转小写
    String.toUpperCase()---转大写
    String.trim();---切断字符串两端的空格
 
    案例:统计一个字符串中每个字母出现的次数
    var  str = "wgwggdggdggdggduiozkv";
    str = str.toLocaleLowerCase();
    var obj = {};
    for (var i=0;i< str.length;i++){
        var key = str[i];
        if(obj[key]){  //判断obj中包含这个字母没有
            obj[key]++;  //有就累加个数
        }
        else{
            obj[key] = 1;  //没有就把字符加到对象中,并且累加一次
        }
    }
    for(var key in obj){
        console.log(key + "这个字母出现" + obj[key]+"次");
    }
 
 
 
(4)Array内置对象的方法
    判断变量/对象是不是数组:var obj=[]; console.log(obj instanceOf Array);
                                            或:console.log(Array.isArray(obj));
    Array.from();---
    Array.concat(arr,arr1,arr2)--arr1.concat(arr2)---合并两个或多个数组
    Array.every(函数)---返回值boolean类型,函数作为参数使用,函数有三个参数,第一个是元素的值,第二个是索引值,第三个是原来的数组(没用)。只有数组中每个元素都符合条件,才返回true
    或
 
    Array.filter()---过滤
 
Array.push()---把值追加到数组中,加到最后,返回值是追加数据之后的数组长度
Array.pop()---删除最后一个元素,返回值是删除的这个值
Array.shift()---删除第一个元素,返回值是删除的这个值
Array.unshift()---向数组的第一个元素前面插入新的元素,返回值是插入后的长度
Array.forEach()---遍历数组,相当于for循环
Array.indexOf(元素值)---返回的是索引,没有则是-1
Array.join("|")---返回的是拼接后的字符串
Array.map(函数)---数组中的每个元素都要执行这个函数,返回的是执行后一起放到一个新的数组
Array.reverse()---数组反转
Array.sort()---数组排序,但不稳定
Array.sort(函数(a,b))---数组排序,传入函数稳定
Array.slice(开始的索引,结束后的索引),截取开始索引到结束索引的数据放到一个新的数组中,但不包括结束索引的
Array.splice(位置index,数字代表删掉的index/0是不删,‘drum字符串是插入的内容’)---
 
 
 
 
 
 
2、基本包装类型
    普通变量不能调用属性和方法
    对象可以直接调用属性和方法
--->基本类型,在执行代码的过程中调用了属性或者方法,而转变成基本包装类型对象
    (string  number  boolean)
 
----特别注意
    如果是一个对象&&true,那么结果是true
    如果是一个true&&对象,那么结果是对象
    var  flag = new Boolean(false);
    var result = true&&flag;
    console.log(result);
 
----特别注意
    var  num=10; //基本类型
    var  num=Number("10"); //转换,没有new--类型转换
    var  num=new Number("10");  //基本包装类型
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2020-08-06 11:33  kalends  阅读(113)  评论(0编辑  收藏  举报