美文网首页
第九章 基本包装类型

第九章 基本包装类型

作者: 尺间天涯 | 来源:发表于2019-02-11 13:55 被阅读0次

    学习要点:

    1. 基本包装类型概述
    2. Boolean类型
    3. Number类型
    4. String类型
    

    为了便于操作基本类型值,ECMAScript提供了三个特殊的引用类型:Boolean、Number和String。这些类型与其他引用类型相似,但是也具有各自的基本类型相应的特殊行为。实际上,每当读取一个基本类型值得时候,后台会创建一个基本包装类型的对象,从未能够调用一些方法来操作这些数据。

    基本包装类型概述

    var str = 'hello world';
    console.log(typeof str);    //string
    console.log(str.substring(2));  //llo world 从下标为2处截取生成新字符串
    console.log(typeof str.substring(2));   //string
    

    字符串是基本类型,但是又是特殊引用类型(基本包装类型),因为它可以调用系统内置方法。

    一、字面量创建字符串

    var str = 'hello world';
    str.age = 10;   // 无效
    str.hello = function () {
        return 'hello hello';   // 无效
    };
    // 基本类型无法添加自定义属性方法
    console.log(str.age);   // undefined
    console.log(str.hello());   // str.hello is not a function
    // 基本包装类型可以调用系统内置方法
    console.log(typeof str);    //string
    console.log(str.substring(2));  //llo world 从下标为2处截取生成新字符串
    console.log(typeof str.substring(2));   //string
    

    (2)new方法创建字符串(不推荐这种方式,创建的是引用(类型)

    var str = new String('hello world');
    str.age = 10;  
    str.hello = function () {
        return 'hello hello';   
    };
    // 基本类型无法添加自定义属性方法
    console.log(str.age);   // 10
    console.log(str.hello());   // hello hello
    

    字面量和new运算符都可以使用内置属性方法,字面量方式不可以自定义属性方法,但是new运算符可以。

    二、Boolean类型

    Boolean类型没有特定的属性或方法

    三、Number类型

    Number类型有一些静态属性(直接通过Number 调用的属性,而无需new运算符)和方法。

    Number静态属性:

    属性 描述
    MAX_VALUE 表示最大数
    MIN_VALUE 表示最小数
    NaN 非数值
    NEGATIVE_INFINITY 负无穷大,溢出返回该值
    POSITIVE_INFINITY 无穷大,溢出返回该值
    prototype 原型,用于增加新属性和方法

    Number对象方法:

    方法 描述
    toString() 将数值转换为字符串,
    toLocalString() 根据本地数字格式转换为字符串
    toFixed(位数) 将数字保留小数点后指定位数并转化为字符串,会四舍五入
    toExponential() 将数字以指数形式表示,保留小数点后指定位数并转化为字符串
    toPrecision(位数) 指数形式或点形式表述数,保留小数点后面指定位数并转化为字符串

    四、String类型

    String类型包含了三个属性和大量的内置方法

    String对象属性:

    属性 描述
    length 返回字符串的字符长度
    constructor 返回创建String对象的函数
    prototype 通过添加属性和方法扩展字符串定义

    String也包含对象的通用方法,比如valueOf()、toLocalString()和toString()方法,但是这些方法都返回字符串的基本知。

    var str = 'hello world';
    console.log(str.length);
    // 11
    console.log(str.constructor);
    //ƒ String() { [native code] }
    

    字符方法:

    方法 描述
    charAt(n) 返回指定索引位置的字符
    charCodeAt(n) 以Unicode编码形式返回指定索引位置的字符
    var str = 'hello world';
    console.log(str.charAt(1)); // e
    console.log(str.charCodeAt(1)); // 101
    console.log(str[1]); // e
    

    字符串操作方法:

    方法 描述
    concat(str1...str2) 将字符串参数串联到调用该方法
    slice(n,m) 返回字符串n到m之间位置的字符串
    substring(n,m) 同上
    substr(n,m) 返回字符串n开始的m个字符串
    var str1 = 'Lee';
    var str2 = 'XiaoLong';
    console.log(str1.concat(' ', str2)); // Lee XiaoLong
    
    console.log(str2.slice(2, 4));  //ao
    console.log(str2.substring(2, 4));  //ao
    console.log(str2.substr(2, 4));  //aoLo
    //以上方法传参为负数会有影响,具体不再演示      
    

    字符串位置方法:

    方法 描述
    indexOf(str,n) 从n开始搜索的第一个str,并将搜索的索引值返回
    lastIndexOf(str,n) 从n开始搜索后一个str,并将搜索的索引值返回
    var str = 'hello world';
    console.log(str.indexOf('l'));  //2
    console.log(str.indexOf('l', 3));  //3 指定位置向后搜索
    console.log(str.lastIndexOf('l'));  //9
    console.log(str.lastIndexOf('l', 8));  //3 指定位置向前搜索
    

    如果没有找到想要的字符串返回-1

    var str = 'hello world';
    //找出所有l的下标
    var arr = [];
    function foo(str) {
        var idx = str.indexOf('l');
        while (idx > -1) {
            arr.push(idx);
            idx = str.indexOf('l', idx + 1);
        }
    }
    foo(str);
    console.log(arr);   // [2, 3, 9]
    

    大小写转换方法:

    方法 描述
    toLowerCase(str) 将字符串全部转换为小写
    roUpperCase(str) 将字符串全部转换为大写
    toLocaleLowerCase(str) 将字符串全部转换为小写,并且本地化
    toLocaleupperCase(str) 将字符串全部转换为大写,并且本地化

    字符串的模式匹配方法:

    方法 描述
    match(pattern) 返回pattern中的子串或者null
    replace(pattern,relacement) 用于replacement 替换pattern
    search(pattern) 返回字符串中的pattern开始位置
    split(pattern) 返回字符串按指定pattern拆分的数组
    var str = 'hello world';
    console.log(str.match('l'));
    // 找到返回 ["l", index: 2, input: "hello world", groups: undefined]
    console.log(str.match(','));
    // 没找到返回 null
    console.log(str.search('l'));
    // 找到返回下标 2
    console.log(str.search(','));
    // 没找到返回-1类似indexOf方法
    console.log(str.replace('l', 'K'));
    // heKlo world
    console.log(str.split(' '));
    // ["hello", "world"]
    

    其他方法:

    方法 描述
    fromCharCode(ascii) 静态方法,输出Ascii码对应值
    localeCompare(str1,str2) 比较两个字符串,并返回对应的值
    console.log(String.fromCharCode(76)); // l
    var str = 'Lee';
    console.log(str.localeCompare('Lee'));  // 0
    console.log(str.localeCompare('Aee'));  // 1
    console.log(str.localeCompare('Zee'));  // -1
    

    还有一些html方法,比如str.link(URL)这种暂时不做介绍。

    相关文章

      网友评论

          本文标题:第九章 基本包装类型

          本文链接:https://www.haomeiwen.com/subject/qjrqeqtx.html