JS基础笔记-关于包装类

133 阅读3分钟

包装类

在JS中,提供了3个包装类,通过它们可以将基本数据类型转换成对象

  • Strint()
  • Number()
  • Boolean()

    var num1 = 3;
    console.log(typeof num1);//number

    var str1 = "hello";
    console.log(typeof str1);//string

    var bool = true;
    console.log(typeof bool);//boolean

    //开发的时候不用
    var num = new Number(3);
    console.log(typeof num); //object


    var str = new String("hello");
    console.log(typeof str); //object

    var bool = new Boolean(true);
    console.log(typeof bool); //object
    var num = new Number(3);
    num.hello = "aa";
    console.log(num.hello);// aa

    var a = 3;
    a.hello = "bb";
    console.log(a.hello);//undefined
    var num = new Number(3);
    var num2 = new Number(3);
    var num3 = 3;

    console.log(num == num2);//false
    console.log(num == num3);//true
    console.log(num === num3);//false

方法和属性只能添加个对象,不能添加给基本数据类型,当我们对一些基本数据类型的值去调用属性和方法,浏览器会临时使用包装类将其转换为对象,然后调用对象的属性和方法,调用完以后给转为基本数据类型

    var s = 123;
    s = s.toString();
    console.log(s);//123
    console.log(typeof s);//string
    
    var s = 123;
    s = s.toString();
    s.hello = "aa";//转换一次
    console.log(s.hello);//undefined  转换第二次,和第一次不是同一个
    console.log(typeof s);//string 转换回基本数据类型

字符串的方法

    var str = "Hello!";
    //  在底层字符串是以字符串数组的形式保存的   ["H","e","l","l","o","!"]

    console.log(str.length);//6

    var str1 = str.charAt(0);//根据索引 返回字符串指定位置的字符
    console.log(str);//Hello! 对原字符串不会有影响
    console.log(str[2]);//l
    console.log(str1);//H

    console.log(str.charCodeAt(0)); //72 根据索引 返回字符串指定位置字符的unicode编码
    console.log(String.fromCharCode(72));//H 根据字符编码来获取字符  注意通过构造函数String来调用


    //concat()连接字符串
    var str = "Hello!";
    result = str.concat("你好");
    console.log(result);//Hello!你好
    
    
    //indexof()检索一个字符串是否含有指定内容,若有返回第一次出现的索引,若没有返回-1
    console.log(str.indexOf("e"));//1 返回字符在字符串中的索引号
    console.log(str.indexOf("u"));//-1
    
    //indexof()可以指定第二个参数,指定开始查找的位置
    str = "hello haiti"
    result = str.indexOf("h", 1);
    console.log(result);// 6
    
    //lastIndexOf()从后往前找,也可以指定第二个参数,指定开始往前查找的位置
    result = str.lastIndexOf("h");
    console.log(result);// 6    
    /*slice()
    - 可以从字符串中截取指定的内容
    - 不会影响原字符串,而是将截取到的内容返回
    - 两个参数(开始位置的索引,结束后一个位置的索引)包括第一个参数,不包括第二个参数
    - 若省略第二个参数,则截取到后边所有的字符
    - 若第二个参数是负数,-1 表示倒数第一个结束,-2表示倒数第二个结束
    */
    str = "abcdefghijkl";
    str.slice(0, 2);
    console.log(str);//abcdefghijkl 
    
    result = str.slice(1, 2);
    console.log(result);//b
    
    
    /*substring()
    - 可以来截取一个字符串,可以slice()类似
    - 参数,(开始位置的索引,结束位置的后一个)
    - 第二参数不接受负数,若为负数默认是0
    - 会自动调节参数的位置,若第二个参数小于第一个参数,会自动交换位置(0,1)==(1,0)
    */
    str = "abcdefghijkl";
    result = str.substring(0, 3);
    result1 = str.substring(3, 0);
    console.log(result+"与"+result1);//abc与abc
    
    
    /*substr()
      - 用来截取字符串
      - (开始位置索引,截取的长度)
    */
    str = "abcdefghijkl";
    console.log(str.substr(3, 2));//de
    /*split()
    - 可以将一个字符串拆分成一个数组
    - 参数(字符串),将会根据字符串去拆分数组 
    */
    str = "abc@def@gh@dj@kl";
    
    result = str.split("@");
    console.log(Array.isArray(result));//true  是数组
    
    console.log(result);//['abc', 'def', 'gh', 'dj', 'kl']
    console.log(result[1]);//true
    
    str = "asdc";
    result = str.split();
    console.log(result);//['asdc']
    result1 = str.split("");
    console.log(result1);//['a', 's', 'd', 'c']