• JavaScript (内置对象及方法)


    JavaScript中的对象分为3种:内置对象、浏览器对象、自定义对象

    JavaScript 提供多个内置对象:Math/Array/Number/String/Boolean...

    对象只是带有属性方法的特殊数据类型。

    内置对象的方法很多,我们只需要知道内置对象提供的常用方法,使用的时候查询文档。

    一、Math对象

    Math对象不是构造函数,它具有数学常数和函数的属性和方法,都是以静态成员的方式提供跟数学相关的运算来找Math中的成员(求绝对值,取整)

    Math.PI                      // 圆周率     console.log(Math.PI);
    Math.E                       // 常数的底数  console.log(Math.E);
    
    Math.random()                // 生成随机数  返回一个浮点,  伪随机数在范围[0,1)
    Math.floor()/Math.ceil()     // 向下取整/向上取整    console.log(Math.ceil(12.09));
    Math.round()                 // 取整,四舍五入       console.log(Math.round(12.09));
    Math.fround()                // 返回数字的最接近的单精度浮点型表示。  console.log(Math.fround(12.09));
    Math.abs()                   // 绝对值         console.log( Math.abs(-2));//2
    Math.max()/Math.min()        // 求最大和最小值   console.log(Math.max(10,1,9,100,200,45,78));
    
    Math.sin()/Math.cos()        // 正弦/余弦  Math.sin(Math.PI / 2); // 1
    Math.power()/Math.sqrt()     // 求指数次幂/求平方根console.log(Math.sqrt(4,2));

    1.1 Math.random()

    函数返回一个浮点,  伪随机数在范围[0,1),也就是说,从0(包括0)往上,但是不包括1(排除1),然后您可以缩放到所需的范围。实现将初始种子选择到随机数生成算法;它不能被用户选择或重置。

    1.1.1 得到一个大于等于0,小于1之间的随机数

    function getRandom() {
      return Math.random();
    }

    1.1.2 得到一个两数之间的随机数

    这个例子返回了一个在指定值之间的随机整数。这个值比min大(如果min不是整数,可能相等)

    function getRandomInt(min, max) {
      min = Math.ceil(min);
      max = Math.floor(max);
      return Math.floor(Math.random() * (max - min)) + min; //The maximum is exclusive and the minimum is inclusive
    }

    也许很容易让人想用舍入来完成这个任务,但是这样做会导致你的随机数处于一个不均匀的分布,这可能不符合你的需求

    得到一个两数之间的随机整数,包括两个数在内

    getRandomInt() 函数在最小值之上,它将排除最大值. 如果你需要结果包含最小值和最大值,怎么办呢?  getRandomIntInclusive() 函数将能完成.

    function getRandomIntInclusive(min, max) {
      min = Math.ceil(min);
      max = Math.floor(max);
      return Math.floor(Math.random() * (max - min + 1)) + min; //The maximum is inclusive and the minimum is inclusive 
    }

    1.2 综合实例

    //随机产生一个十六进制的颜色值
    //封装成一个函数
    console.log(parseInt(Math.random() * 5));
    
    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 = parseInt(Math.random() * 16);
        str += arr[num];
      }
      return str;
    }

    二、Date对象

    var dt = new Date();
    //当前的时间---当前的服务器
    console.log(dt);              //Wed Jun 13 2018 12:57:17 GMT+0800 (China Standard Time)
    
    var dt = new Date("2017-08-12");
    //传入的时间
    console.log(dt);              //Sat Aug 12 2017 08:00:00 GMT+0800 (China Standard Time)
    
    
    var dt = new Date("2017/08/12");
    // 传入的时间
    console.log(dt);              //Sat Aug 12 2017 00:00:00 GMT+0800 (China Standard Time)
    // 获取时间的对象
    var dt = Date.now();
    console.log(dt);//毫秒        //1528865837155
    总结:
    var
    dt=new Date(); console.log(dt); // var dt=+new Date(); //一种特殊的写法,只适用于这个Date的对象 // console.log(dt); 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.toDateString()); //日期 console.log(dt.toLocaleDateString()); //日期 console.log(dt.toTimeString()); //时间 console.log(dt.toLocaleTimeString(); //时间 console.log(dt.valueOf()); //毫秒
    console.log(dt.toString()); // 转成字符串 Wed Jun 13 2018 13:08:36 GMT+0800 (China Standard Time)
     

    2.1 兼容性问题

    获取日期的毫秒形式

    var now = new Date();
    // valueOf用于获取对象的原始值
    console.log(now.valueOf())    
    
    // HTML5中提供的方法,有兼容性问题
    var now = Date.now();    
    
    // 不支持HTML5的浏览器,可以用下面这种方式
    var now = + new Date();            // 调用 Date对象的valueOf() 

    日期格式化方法

    toString()        // 转换成字符串
    valueOf()        // 获取毫秒值
    // 下面格式化日期的方法,在不同浏览器可能表现不一致,一般不用
    toDateString()
    toTimeString()
    toLocaleDateString()
    toLocaleTimeString()

    获取日期指定部分

    toString()        // 转换成字符串
    valueOf()        // 获取毫秒值
    // 下面格式化日期的方法,在不同浏览器可能表现不一致,一般不用
    toDateString()
    toTimeString()
    toLocaleDateString()
    toLocaleTimeString()

    2.2 综合案例

    写一个函数,格式化日期对象,返回yyyy-MM-dd HH:mm:ss的形式

    function formatDate(d) {
        //如果date不是日期对象,返回
        if (!date instanceof Date) {
            return;
        }
        var year = d.getFullYear(),
            month = d.getMonth() + 1,
            date = d.getDate(),
            hour = d.getHours(),
            minute = d.getMinutes(),
            second = d.getSeconds();
        month = month < 10 ? '0' + month : month;
        date = date < 10 ? '0' + date : date;
        hour = hour < 10 ? '0' + hour : hour;
        minute = minute < 10 ? '0' + minute:minute;
        second = second < 10 ? '0' + second:second;
        return year + '-' + month + '-' + date + ' ' + hour + ':' + minute + ':' + second;
    }
    console.log(formatDate(new Date()));
    >>>
    2018-06-13 14:00:46

    三、String对象

    3.1字符串的不可变

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

    3.2 创建字符串对象

    var str1 = "sda";
    console.log(typeof (str1));    //string
    var str = new String('Hello World');
    console.log(typeof (str));     //object
    var str = "sss";
    console.log(str instanceof String); //false

    var str1 = new String("ef");
    console.log(str1 instanceof String); //true
     
    var str="hello";
    str[1]="W"; 字符串可以通过索引访问字符串中的某个值
    但是,是可以访问---读取---只读
     

    3.3 字符串对象的常用方法

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

    // 1 字符方法
    charAt()        //获取指定位置处字符
    charCodeAt()      //获取指定位置处字符的ASCII码
    str[0]           //HTML5,IE8+支持 和charAt()等效
    // 2 字符串操作方法
    concat()           //拼接字符串,等效于+,+更常用
    slice()            //从start位置开始,截取到end位置,end取不到,没有end,则取到最后
    substring()     //从start位置开始,截取到end位置,end取不到,没有end,则取到最后
    substr()           //从start位置开始,截取length个字符,没有length,则取到最后
    // 3 位置方法
    indexOf()       //返回指定内容在元字符串中的位置
    lastIndexOf()     //从后往前找,只找第一个匹配的。但是位置序号还是从前往后排的。
    // 4 去除空白   
    trim()          //只能去除字符串前后的空白
    // 5 大小写转换方法
    to(Locale)UpperCase()     //转换大写
    to(Locale)LowerCase()     //转换小写
    // 6 其它
    search()                  //寻找一个字符在字符串中的位置。
    replace()                 //替换
    split()                   //分开字符串
    fromCharCode()            //输入ASCII数字,返回字符
    // String.fromCharCode(101, 102, 103);     //把ASCII码转换成字符串

    实例方法---->必须要通过new的方式创建的对象(实例对象)来调用的方法。
    静态方法---->直接通过大写的构造函数的名字调用的方法(直接通过大写的对象名字调用的)。

    var str = "12345";
    console.log(str.length);        //5
    
    var str = "whatareyounoshalei";
    var result = str.charAt(100);   // 由于超出索引,结果为""
    console.log(result + "1");
    
    var str = String.fromCharCode(107, 108, 109);
    console.log(str);                  //klm
    
    var str = String.fromCharCode(83, 79, 83);
    console.log(str);                     //SOS
    
    var str = "what";
    console.log(str + "are" + "you" + "no" + "sha" + "lei");  //whatareyounoshalei
    
    var str = "小苏";
    console.log(str.concat("喜欢", "苹果", "这是", "真的"));   //小苏喜欢苹果这是真的
    
    var str = "小苏喜欢苹果这是真的";
    var index = str.indexOf("", 5);
    console.log(index);                        //从5开始找是找不到的,所以返回 -1
    var index = str.indexOf("喜欢", 1);
    console.log(index);                        //2
    
    var str = "helo amen";
    var index = str.lastIndexOf("a");
    console.log(index);                        //5
    
    var str = "小苏好帅哦,真的好勇敢哦";
    if (str.indexOf("") != -1) {
        str = str.replace("", "猥琐");
    } else {
        console.log("不存在");                    //小苏好帅哦,真的好勇敢哦
    }
    console.log(str);
    
    var str = "如果有一天我邪恶了,请记住,我曾纯洁过";
    //从索引5的位置开始提取,到索引为10的前一个结束,没有10,并返回这个提取后的字符串
    str = str.slice(5, 10);
    console.log(str);                               //我邪恶了,
    
    var str = "乔峰|慕容|凤姐|梅超风|小苏|大蛇丸";
    var arr = str.split("|");
    for (var i = 0; i < arr.length; i++) {
        console.log(arr[i]);                       //乔峰  慕容 ...每次都换行
    }
    
    var str = "哈哈,小苏真的是好帅哦";
    str = str.substr(5, 5);
    console.log(str);                                //真的是好帅
    
    var str = "哈哈,小苏真的是好帅哦";
    str = str.substring(5, 9);
    console.log(str);                                  //真的是好
    
    var str = "HELLO";
    //str=str.toLocaleLowerCase();
    str = str.toLowerCase();
    console.log(str);                                //hello
    
    var str = "hello";
    str = str.toLocaleUpperCase();
    //str=str.toUpperCase();
    console.log(str);                                 //HELLO
    
    var str = "   哦,这    是一个神奇的一天   ";
    str = str.trim();
    console.log("====" + str + "====");                 //====哦,这    是一个神奇的一天====

    3.4 总结

         * 字符串的常用属性:
         * .length------>字符串的长度
         * .charAt(索引),返回值是指定索引位置的字符串,超出索引,结果是空字符串
         * .fromCharCode(数字值,可以是多个参数),返回的是ASCII码对应的值
         * .concat(字符串1,字符串2,...);返回的是拼接之后的新的字符串
         * .indexOf(要找的字符串,从某个位置开始的索引);返回的是这个字符串的索引值,没找到则返回-1
         * .lastIndexOf(要找的字符串);从后向前找,但是索引仍然是从左向右的方式,找不到则返回-1
         * .replace("原来的字符串","新的字符串");用来替换字符串的
         * .slice(开始的索引,结束的索引); 从索引5的位置开始提取,到索引为10的前一个结束,没有10,并返回这个提取后的字符串
         * .split("要干掉的字符串",切割后留下的个数);切割字符串
         * .substr(开始的位置,个数);返回的是截取后的新的字符串
         * .substring(开始的索引,结束的索引),返回截取后的字符串,不包含结束的索引的字符串
         * .toLocaleLowerCase();转小写
         * .toLowerCase();转小写
         * .toLocaleUpperCase()转大写
         * .toUpperCase();转大写
         * .trim();干掉字符串两端的空格

        

    // 1 字符方法
    charAt()        //获取指定位置处字符
    charCodeAt()      //获取指定位置处字符的ASCII码
    str[0]           //HTML5,IE8+支持 和charAt()等效
    // 2 字符串操作方法
    concat()           //拼接字符串,等效于+,+更常用
    slice()            //从start位置开始,截取到end位置,end取不到,没有end,则取到最后
    substring()     //从start位置开始,截取到end位置,end取不到,没有end,则取到最后
    substr()           //从start位置开始,截取length个字符,没有length,则取到最后
    // 3 位置方法
    indexOf()       //返回指定内容在元字符串中的位置
    lastIndexOf()     //从后往前找,只找第一个匹配的。但是位置序号还是从前往后排的。
    // 4 去除空白   
    trim()          //只能去除字符串前后的空白
    // 5 大小写转换方法
    to(Locale)UpperCase()     //转换大写
    to(Locale)LowerCase()     //转换小写
    // 6 其它
    search()                  //寻找一个字符在字符串中的位置。
    replace()                 //替换
    split()                   //分开字符串
    fromCharCode()            //输入ASCII数字,返回字符
    // String.fromCharCode(101, 102, 103);     //把ASCII码转换成字符串

    3.5 案例

    3.5.1 案例1:截取字符串"我爱中华人民共和国",中的"中华"

    var str = "我爱中华人民共和国";
    //console.log("中华");
    var key = "中华";
    //先获取要截取的字符串的索引的位置
    var index = str.indexOf(key);
    //从指定的位置开始截取,截取两个即可
    str = str.substr(index, 2);
    console.log(str);

    3.5.2 案例2:找到这个字符串中所有的 o 出现的位置

    var str2 = "hello wod odd ott fbo nhyo";
    var index = 0;//开始的位置
    var key = "o";//要找的字符串
    while ((index = str2.indexOf(key, index)) != -1) {//如果是-1情况,说明找完了
      console.log(index);
      index += key.length;
    }
    //4 7 10 14 20 25
    //var index=str2.indexOf("o",0);
    //console.log(index);

    3.5.3 案例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对象

    4.1  数组创建

    创建方式1:
    var arrname = [元素0,元素1,….];          // var arr=[1,2,3];
    
    创建方式2:
    var arrname = new Array(元素0,元素1,….); // var test=new Array(100,"a",true);
    
    创建方式3:
    var arrname = new Array(长度);
    //  初始化数组对象:
    var cnweek=new Array(7);
    cnweek[0]="星期日";
    cnweek[1]="星期一";
    ...
    cnweek[6]="星期六";

    4.1.1 创建二维数组:

    var cnweek=new Array(7);
    for (var i=0;i<=6;i++){
        cnweek[i]=new Array(2);
    }
    cnweek[0][0]="星期日";
    cnweek[0][1]="Sunday";
    cnweek[1][0]="星期一";
    cnweek[1][1]="Monday";
    ...
    cnweek[6][0]="星期六";
    cnweek[6][1]="Saturday";

    4.1.2 对象是不是数组类型:两种

    //1   instanceof
    var str = "sss";
    console.log(str instanceof String);   //false
    
    var str1 = new String("ef");
    console.log(str1 instanceof String);  //true
    
    var obj = [];
    console.log(obj instanceof Array);//true
    
    var str1 = new Array();
    console.log(str1 instanceof Array);  //true
    //2 使用数组的 
    console.log(Array.isArray(obj));//   Array.isArray() HTML5中提供的方法,有兼容性问题

    4.2 数组对象的属性和方法

    1、join方法:
    x.join(bystr)       ----将数组元素拼接成字符串
    
    var arr1=[1, 2, 3, 4, 5, 6, 7];
    var str1=arr1.join("-");
    alert(str1);  //结果为"1-2-3-4-5-6-7" 
    
    2、concat方法:
    x.concat(value,...)    ----数组拼接
    var a = [1,2,3];
    var b=a.concat(4,5) ;
    alert(a.toString());  //返回结果为1,2,3
    alert(b.toString());  //返回结果为1,2,3,4,5
    
    3、数组排序-reverse sort:
    //x.reverse()
    //x.sort()
    
    var arr1=[32, 12, 111, 444];
    //var arr1=["a","d","f","c"];
    
    arr1.reverse(); //颠倒数组元素
    alert(arr1.toString());
    //结果为444,111,12,32
    
    arr1.sort();    //排序数组元素
    alert(arr1.toString());
    //结果为111,12,32,444
    
    //------------------------------
    arr=[1,5,2,100];
    
    //arr.sort();
    //alert(arr);
    //如果就想按着数字比较呢?
    
    function intSort(a,b){
        if (a>b){
            return 1;//-1
        }
        else if(a<b){
            return -1;//1
        }
        else {
            return 0
        }
    }
    
    arr.sort(intSort);
    
    alert(arr);
    
    function IntSort(a,b){
        return a-b;
    }
    
    4、数组切片操作:
    //x.slice(start, end)
    //
    //使用注解
    //
    //x代表数组对象
    //start表示开始位置索引
    //end是结束位置下一数组元素索引编号
    //第一个数组元素索引为0
    //start、end可为负数,-1代表最后一个数组元素
    //end省略则相当于从start位置截取以后所有数组元素
    
    var arr1=['a','b','c','d','e','f','g','h'];
    var arr2=arr1.slice(2,4);
    var arr3=arr1.slice(4);
    var arr4=arr1.slice(2,-1);
    
    alert(arr2.toString());
    //结果为"c,d" 
    alert(arr3.toString());
    //结果为"e,f,g,h"
    alert(arr4.toString());
    //结果为"c,d,e,f,g"
    
    5、删除子数组:
    //x. splice(start, deleteCount, value, ...)
    
    //使用注解
    
    //x代表数组对象
    //splice的主要用途是对数组指定位置进行删除和插入
    //start表示开始位置索引
    //deleteCount删除数组元素的个数
    //value表示在删除位置插入的数组元素
    //value参数可以省略       
            
    var a = [1,2,3,4,5,6,7,8];
    a.splice(1,2);
    
    alert(a.toString());//a变为 [1,4,5,6,7,8]
    
    a.splice(1,1);
    
    alert(a.toString());//a变为[1,5,6,7,8]
    
    a.splice(1,0,2,3);
    
    alert(a.toString());//a变为[1,2,3,5,6,7,8]
    
    6、数组的push和pop:
    //push pop这两个方法模拟的是一个栈操作
    
    //x.push(value, ...)  压栈
    //x.pop()             弹栈      
    //使用注解
    //
    //x代表数组对象
    //value可以为字符串、数字、数组等任何值
    //push是将value值添加到数组x的结尾
    //pop是将数组x的最后一个元素删除
    
    
    var arr1=[1,2,3];
    arr1.push(4,5);
    alert(arr1);
    //结果为"1,2,3,4,5"
    arr1.push([6,7]);
    alert(arr1)
    //结果为"1,2,3,4,5,6,7"
    arr1.pop();
    alert(arr1);
    //结果为"1,2,3,4,5"
    
    7、数组的shift和unshift:
    //x.unshift(value,...)
    //x.shift()
    //使用注解
    
    //x代表数组对象
    //value可以为字符串、数字、数组等任何值
    //unshift是将value值插入到数组x的开始
    //shift是将数组x的第一个元素删除
    
    var arr1=[1,2,3];
    arr1.unshift(4,5);
    alert(arr1);  //结果为"4,5,1,2,3"
    
    arr1. unshift([6,7]);
    alert(arr1);  //结果为"6,7,4,5,1,2,3"
    
    arr1.shift();
    alert(arr1);  //结果为"4,5,1,2,3"

     数组常用方法

    // 1 栈操作(先进后出)
    push()
    pop()         //取出数组中的最后一项,修改length属性
    // 2 队列操作(先进先出)
    push()
    shift()        //取出数组中的第一个元素,修改length属性
    unshift()     //在数组最前面插入项,返回数组的长度
    // 3 排序方法
    reverse()    //翻转数组
    sort();     //即使是数组sort也是根据字符,从小到大排序
    // 带参数的sort是如何实现的?
    // 4 操作方法
    concat()      //把参数拼接到当前数组
    slice()     //从当前数组中截取一个新的数组,不影响原来的数组,参数start从0开始,end从1开始
    splice()    //删除或替换当前数组的某些项目,参数start, deleteCount, options(要替换的项目)
    // 5 位置方法
    indexOf()、lastIndexOf()   //如果没找到返回-1
    // 6 迭代方法 不会修改原数组(可选)
    every()、filter()、forEach()、map()、some()
    // 7 方法将数组的所有元素连接到一个字符串中。
    join()

     清空数组

    // 方式1 推荐 
    arr = [];
    // 方式2 
    arr.length = 0;
    // 方式3
    arr.splice(0, arr.length);

    案例

    案例1:将一个字符串数组输出为|分割的形式,比如“刘备|张飞|关羽”。使用两种方式实现

    function myJoin(array, seperator) {
      seperator = seperator || ',';
      array = array || [];
      if (array.length == 0){
        return '';
      }
      var str = array[0];
      for (var i = 1; i < array.length; i++) {
        str += seperator + array[i];
      }
      return str;
    }
    var array = [6, 3, 5, 6, 7, 8, 0];
    console.log(myJoin(array, '-'));
    
    console.log(array.join('-'))

    案例2:将一个字符串数组的元素的顺序进行反转。["a", "b", "c", "d"] -> [ "d","c","b","a"]。使用两种种方式实现。提示:第i个和第length-i-1个进行交换

    function myReverse(arr) {
      if (!arr || arr.length == 0) {
        return [];
      }
      for (var i = 0; i < arr.length / 2; i++) {
        var tmp = arr[i];
        arr[i] = arr[this.length - i - 1];
        arr[arr.length - i - 1] = tmp;
      }
      return arr;
    }
    
    var array = ['a', 'b', 'c'];
    console.log(myReverse(array));
    
    console.log(array.reverse());

    案例3:工资的数组[1500, 1200, 2000, 2100, 1800],把工资超过2000的删除

    // 方式1
    var array =  [1500,1200,2000,2100,1800];
    var tmpArray = [];
    for (var i = 0; i < array.length; i++) {
      if(array[i] < 2000) {
        tmpArray.push(array[i]);
      }
    }
    console.log(tmpArray);
    // 方式2
    var array =  [1500, 1200, 2000, 2100, 1800];
    array = array.filter(function (item, index) {
      if (item < 2000) {
        return true;
      }
      return false;
    });
    console.log(array);

    案例4:["c", "a", "z", "a", "x", "a"]找到数组中每一个a出现的位置

    var array =  ['c', 'a', 'z', 'a', 'x', 'a'];
    do {
      var index = array.indexOf('a',index + 1);
      if (index != -1){
        console.log(index);
      }
    } while (index > 0);

    案例5:编写一个方法去掉一个数组的重复元素

    var array =  ['c', 'a', 'z', 'a', 'x', 'a'];
    function clear() {
      var o = {};
      for (var i = 0; i < array.length; i++) {
        var item = array[i];
        if (o[item]) {
          o[item]++;
        }else{
          o[item] = 1;
        }
      }
      var tmpArray = [];
      for(var key in o) {
        if (o[key] == 1) {
          tmpArray.push(key);
        }else{
          if(tmpArray.indexOf(key) == -1){
            tmpArray.push(key);
          }
        }
      }
      returm tmpArray;
    }
    
    console.log(clear(array));

    基本包装类型

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

    // 下面代码的问题?
    // s1是基本类型,基本类型是没有方法的
    var s1 = 'zhangsan';
    var s2 = s1.substring(5);
    
    // 当调用s1.substring(5)的时候,先把s1包装成String类型的临时对象,再调用substring方法,最后销毁临时对象, 相当于:
    var s1 = new String('zhangsan');
    var s2 = s1.substring(5);
    s1 = null;
    // 创建基本包装类型的对象
    var num = 18;                  //数值,基本类型
    var num = Number('18');     //类型转换
    var num = new Number(18);     //基本包装类型,对象
    // Number和Boolean基本包装类型基本不用,使用的话可能会引起歧义。例如:
    var b1 = new Boolean(false);                //注意:b1是对象
    var b2 = b1 && true;        // true
    var b3 = true && b1; //Boolean {false} 后面是什么就是什么
  • 相关阅读:
    Inside The C++ Object Model
    Inside The C++ Object Model
    奇偶剪枝算法
    HDU 1088 Write a simple HTML Browser
    HDU 1084 What Is Your Grade?
    二分图的最大匹配(匈牙利算法)HDU1083
    来自codeblock 贴吧
    HDU 1075 What Are You Taking About
    HDU 1082 Matrix Chain Multiplication
    pair模板类
  • 原文地址:https://www.cnblogs.com/dongye95/p/9177309.html
Copyright © 2020-2023  润新知