内置对象

js中的三种对象:
1.内置对象-----js系统自带的对象
2.自定义对象-----自己定义的构造函数创建的对象
3.浏览器对象---BOM中

内置对象:
   Math 
   Date
   String
   Array
   Object
验证是不是对象的方式:console.log(Array instanceof Object);

Math对象

MDN----JavaScript在线帮助文档
实例对象:通过构造方法创建出来,实例化的对象
静态对象:不需要创建,直接就是一个对象,方法(静态方法)直接通过这个对象调用即可
实例方法必须通过实例对象调用
静态方法必须通过大写的对象调用
   Math.PI----π---
   Math.E----常数的底数
   Math.abs(值)-----绝对值
   Math.ceil(值)----向上取整
   Math.floor(值)---向下取整
   Math.random()-----随机数[0,1)
   产生1到100的随机数: console.log(parseInt(Math.random()*100)+1);
   
   //例子:自己定义一个对象,实现系统的max的方法
    function Max(){
        this.getMax=function () {
            var max=arguments[0];
            for(var i=1;i<arguments.length;i++){
                if(max<arguments[i])
                    max=arguments[i];
            }
            return max;
        };
    }
    var obj=new Max();
    console.log(obj.getMax(12,34,23,13));
   
    //随机产生一个十六进制的颜色值
    function getColor() {
        var array=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];
        var str="#";
        for(var i=0;i<6;i++){
            str += array[parseInt(Math.random() * 16)];
        }
        return str;
    }
    console.log(getColor());

Date对象

1.创建Date实例的方法(常用)
var dt=new Date();
var dt=new Date("2019/03.23");//传入字符串类型的参数
    var dt=new Date();
    console.log(dt);//当前时间,服务器的时间
    console.log(dt);
    var dt=new Date("2017/08/12");//Sat Aug 12 2017 00:00:00 GMT+0800 (中国标准时间)
    var dt = new Date();
    获取年份
    console.log(dt.getFullYear());
    获取月份
    console.log(dt.getMonth()+1);//是0开始的 真实的月份是需要加1的
    获取日期
    console.log(dt.getDate());
    获取小时
    console.log(dt.getHours());
    获取分钟
    console.log(dt.getMinutes());
    获取秒
    console.log(dt.getSeconds());
    获取星期
    console.log(dt.getDay());//星期从0开始的(0就是星期日)
    console.log(dt.valueOf());//毫秒数
    console.log(dt.toDateString());//Thu Feb 06 2020
    console.log(dt.toString());//Thu Feb 06 2020 15:58:33 GMT+0800 (中国标准时间)
    console.log(dt.toLocaleDateString());//2020/2/6
    console.log(dt.toTimeString());//15:58:33 GMT+0800 (中国标准时间)
    console.log(dt.toLocaleTimeString());//下午3:58:33
    var dt=Date.now();
    console.log(dt);//返回自 1970-1-1 00:00:00  UTC(世界标准时间)至今所经过的毫秒数

   案例:格式化后的指定格式的日期和时间---封装一个函数
    /**
     * 格式化时间
     * @returns {string}
     */
    function getDate(dt) {
        var dt = new Date();
        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()));

    var dt=new Date();
    console.log(dt.valueOf());
    var dt2=new Date(dt.valueOf());//毫秒数转Date对象
    console.log(dt2);

String对象

1.字符串可以看成是字符组成的数组,可以通过for循环进行遍历,但是js中没有字符类型
    var str="枕头里藏着一个梦,梦里面住着无法拥抱的人";
    for(var i=0;i<str.length;i++){
        console.log(str[i]);
    }
2.在js中字符串可以使用单引号也可以使用双引号
3.字符串特性:不可变性,字符串的值是不可改变的,改变的只是引用的地址
    var str="枕头里藏着一个梦,梦里面住着无法拥抱的人";
    console.log(str[3]);//藏
    str[3]="ta";
    console.log(str);//枕头里藏着一个梦,梦里面住着无法拥抱的人
    str="可惜不是你";
    console.log(str);//可惜不是你
4.string------>字符串类型------基本类型
  String------>字符串类型------引用类型
5.String 对象的方法
  实例方法:必须通过new的方式创建的对象来调用方法
  静态方法:直接通过大写的构造函数的名字调用的方法(直接通过大写的对象名字调用的方法)
  字符串常用的属性:
  .length----->字符串长度
  .charAt(index)---->返回指定索引位置的字符串,超出索引,结果是空字符串
  .indexOf(要找的字符串,从哪个位置开始找的索引)------>返回这个字符串最开始出现的索引值,没找到则返回-1
  .concat()------>返回的是拼接之后的新的字符串
  String.fromCharCode(数字值,可以是多个参数)------>返回的是ASCII码对应的值
  .lastIndexOf(要找的字符串);------->返回该字符串最后一次出现的索引,没找到则返回-1
  .replace("原来的字符串","新的字符串");用来替换字符串的
  .slice(开始的索引,结束的索引); 从开始索引的位置开始提取,到结束索引的前一个结束,如果只有一个参数,则会从这个参数开始一直提取到字符串末尾
  .split("分隔符",限定返回的分割片段数量)----->切割字符串,返回的是一个字符串数组
  .substr(开始的位置,个数);返回的是截取后的新的字符串
  .substring(开始的索引,结束的索引),返回截取后的字符串,不包含结束的索引的字符串
  .toLowerCase();转小写
  .toUpperCase();转大写
  .trim();干掉字符串两端的空格
   如果想知道这个对象中有没有sex这个属性,只要把对象["属性名字"]--->放在if的判断中即可----判断对象中有没有这个属性;if的判断的结果是true,则有这个属性,否则没有这个属性
案例:
    var str="枕头里藏着一个梦,梦里面住着无法拥抱的人";
    console.log(str.charAt(100));//" "
    console.log(str.length);//20
    console.log(String.fromCharCode(23,34));//"
    console.log(str.concat("真的吗","好吧"));//枕头里藏着一个梦,梦里面住着无法拥抱的人真的吗好吧
    console.log(str.indexOf("一个"));//5
    console.log(str.replace("梦","人"));//枕头里藏着一个人,梦里面住着无法拥抱的人
    console.log(str.slice(3,8));//藏着一个梦
    var arry=str.split("一个")//
    for(var i=0;i<arry.length;i++){
        console.log(arry[i]);//枕头里藏着   //梦,梦里面住着无法拥抱的人
    }
    console.log(str.substr(2,4));//里藏着一
    console.log(str.substring(2,4));//里藏
    str="  weGFH  ";
    console.log(str.toLowerCase());//wegfh
    console.log(str.toUpperCase());//WEGFH 
    console.log(str.trim());//weGFH
    
案例3:找到这个字符串中每个字符出现了多少次
    var str3 = "whatOareYyouYnoYshaHleiHoHmyHgod";
    //第一步:把所有的字母全部变成小写
    str3 = str3.toLocaleLowerCase();
    //第二步:创建一个空对象,目的:把字母作为键,次数作为值
    var obj = {};
    //第三步,遍历字符串,获取每个字母
    for (var i = 0; i < str3.length; i++) {
        //判断obj这个对象中有没有这个字母(字母---键)
        var key = str3[i];//每个字母
        if (obj[key]) {//判断obj中有没有这个键
            //对象中有这个字母了
            obj[key]++;
        } else {
            //对象中没有这个字母,那就把字母加到对象中,并且给这个字母一个出现的次数,默认1次
            obj[key] = 1;
        }
    }
    //遍历对象,显示每个字母的次数
    for(var key in obj){
        console.log(key+"这个字母出现了"+obj[key]+"次");
    }

Array对象

Array对象的方法:
    1.Array.isArray(值);----->如果值是 Array,则为true; 否则为false。
    2.instanceof关键字也可以判断该变量是不是Array类型的
    var obj=new Array();
        console.log(Array.isArray(obj));//true
        console.log(obj instanceof Array);//true
    3..concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
    var num1=[1,2,3],num2=[4,5,6],num3=[7,8,9];
        console.log(num1.concat(num2,num3));//(9) [1, 2, 3, 4, 5, 6, 7, 8, 9]   
    4..every(callback[回调函数]) 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试【return的条件】。它返回一个布尔值。    【callback用来测试每个元素的函数,它可以接收三个参数:element用于测试的当前值。index可选,用于测试的当前值的索引。array可选,调用 every 的当前数组。】
      var arr=["小明明lkko","小曹操674","小白白bd","笑眯眯a"];
      var flag=arr.every(function (ele,index) {
         //数组中的每个元素的长度是不是大于4
         return ele.length>4;
      });
      console.log(flag);//flase
    5..filter(callback) 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。【callback用来测试数组的每个元素的函数。返回 true 表示该元素通过测试,保留该元素,false 则不保留。它接受以下三个参数:element用于测试的当前值。index可选,用于测试的当前值的索引。array可选,调用filter的当前数组。】 
    var array=[12,0,23,4,0,45];
        var flag=array.filter(function (element) {
            return element!=0;
        });
        console.log(flag);//(4) [12, 23, 4, 45]
    6..push() 方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度。
    var array=[12,12,3,4,5,5,5];
        var length=array.push(23,45);
        console.log(length);//9
        console.log(array);//(9) [12, 12, 3, 4, 5, 5, 5, 23, 45]   
    7..pop()方法从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。
    var array=[12,12,3,4,5,5,5];
        console.log(array.pop());//5
        console.log(array);//(6) [12, 12, 3, 4, 5, 5]  
    8..shift() 方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。从数组中删除的元素; 如果数组为空则返回undefined 。
    var array=[12,12,3,4,5,5,5];
        console.log(array.shift());//12
        console.log(array);//(6) [12, 3, 4, 5, 5, 5]       
    9..unshift() 方法将一个或多个元素添加到数组的开头,并返回该数组的新长度(该方法修改原有数组)。
    var array=[12,12,3,4,5,5,5];
        console.log(array.unshift(12,45));//9
        console.log(array);//(9) [12, 45, 12, 12, 3, 4, 5, 5, 5]   
    10..forEach(callback) 方法对数组的每个元素执行一次提供的函数。【为数组中每个元素执行的函数,该函数接收三个参数:currentValue数组中正在处理的当前元素。index 可选,数组中正在处理的当前元素的索引。array 可选,forEach() 方法正在操作的数组。】  
     var array=[12,23,34];
        var result=array.forEach(function (element,index) {
            console.log(element+"========"+index);
        })   //12========0
             //23========1
             //34========2
    11..indexOf(要查找的元素,从第几个索引开始)方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1   
    12..lastIndexOf() 方法返回指定元素(也即有效的 JavaScript 值或变量)在数组中的最后一个的索引,如果不存在则返回 -1。从数组的后面向前查找  
    13..join(separator ) 方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串 【指定一个字符串来分隔数组的每个元素。如果需要,将分隔符转换为字符串。如果缺省该值,数组元素用逗号(,)分隔。如果separator是空字符串(""),则所有元素之间都没有任何字符。】   
    var a = ['Wind', 'Rain', 'Fire'];
    var myVar1 = a.join();      // myVar1的值变为"Wind,Rain,Fire"
    var myVar2 = a.join(', ');  // myVar2的值变为"Wind, Rain, Fire"
    var myVar3 = a.join(' + '); // myVar3的值变为"Wind + Rain + Fire"
    var myVar4 = a.join('');    // myVar4的值变为"WindRainFire"
   14..map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后并返回结果,返回一个新数组。
   var numbers = [1, 4, 9];
      var doubles = numbers.map(function(num) {
      return num * 2;
      });
      // doubles数组的值为: [2, 8, 18]
      // numbers数组未被修改: [1, 4, 9]
  15..reverse() 方法将数组中元素的位置颠倒,并返回该数组。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。该方法会改变原数组。
      const array1 = ['one', 'two', 'three'];
      console.log('array1:', array1);
      // expected output: "array1:" Array ["one", "two", "three"]
      const reversed = array1.reverse();
      console.log('reversed:', reversed);
      // expected output: "reversed:" Array ["three", "two", "one"]
      // Careful: reverse is destructive -- it changes the original array.
      console.log('array1:', array1);
      // expected output: "array1:" Array ["three", "two", "one"]
   16..sort(compareFunction) 方法用原地算法对数组的元素进行排序,并返回数组----->可能不稳定,如果不稳定,请写MDN中的那个固定的代码
   var array=[12,2,3,4,3,22,6,323,43];
        var result=array.sort(function (a,b) {
            if(a>b)
                return 1;
            if(a==b)
                return 0;
            else
                return -1;
        })
        console.log(result);//(9) [2, 3, 3, 4, 6, 12, 22, 43, 323]
  17..slice(开始的索引,结束的索引);把截取的数组的值放在一个新的数组中,但是不包含结束的索引对应的元素值
  var arr=[10,20,30,40,50,60,70,80,90,100];
           var newArr= arr.slice(3,7);
           console.log(newArr);//(4) [40, 50, 60, 70]
  18..splice(开始的位置,要删除的个数,替换的元素的值);一般是用于删除数组中的元素,或者是替换元素,或者是插入元素,此方法会改变原数组.   
     var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
     var removed = myFish.splice(2, 0, 'drum', 'guitar');
    // 运算后的 myFish: ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"] 
    var myFish = ['angel', 'clown', 'drum', 'sturgeon'];
    var removed = myFish.splice(2, 1, "trumpet");
    // 运算后的 myFish: ["angel", "clown", "trumpet", "sturgeon"]
    // 被删除的元素: ["drum"]