美文网首页
基本引用类型

基本引用类型

作者: Viewwei | 来源:发表于2022-05-17 14:14 被阅读0次
    概论

    引用值是某个特定引用类型的实例。引用类型是把数据和功能组合在一起的结构。经常被人称为类。但是在JavaScript中缺少传递面向对象编程语言所具备的某些基本结构,包括类和接口。引用类型有时候也成为对象定义。对象称作为某个特定引用类型的实例。新对象通过使用new操作符跟一个构造函数来创造

    Date

    Date是JavaScript自带的一个日期类。要创建一个日期类,需要使用new来创建。不给Date传递参数的时候创建的是当前时间的日期。ECMSScript为此还提供两个辅助函数Date.parse()和Date.UTC()
    Date类型还重写了toLocaleString()、toString()和valueOf()方法

    RegExp

    RegExp类型支持正则表达式。正则表达式使用的是Perl的简洁语法来创建。正则表达式可以带零个或者多个flags(标记)用于控制正则表达式的行为

    • g 全局模式
    • i 不区分大小写
    • m 多行模式
    • y 粘附模式
    • u Unicode 模式
    • s dotAll 模式
      RegExp实例的主要方法式exec(),主要用于捕获组使用,这个方法只接收一个参数,即要应用模式的字符串。如果找到匹配项,则返回包含第一个匹配项的数据,如果没有找到,则返回null,虽然返回项是数组,但包含两个额外的属性:index和input.index表示匹配模型的起始位置。input要查找的字符串

    原始包装类型

    为了方便操作原始值,ECMASCript提供三种特殊的引用类型:Boolean、Number和String。每当用到某个原始值的属性和方法的时候,后台都会相应的包装类型的对象,从而暴露操作原始值的各种方法

    let s1 = "a"
    let s2 = s1.substring(0)
    

    在这里s1是包含字符串的变量,它是一个原始值,第二行紧接着在s1上调用substring()方法,并把结果保存到s2中。我们知道原始值本身不是对象,因此在逻辑上是不存在方法和属性的,而实际上这个例子又确实按照预期运行了。具体原因是在第二行访问s1的时候,是以读模式访问,也就是从内存访问变量保存的值,在读模式访问字符串的任何时候,后台都会先创建一个String类型的实例,调用实例上的方法和销毁实例。所有原始才能够正常的调用属性或者方法。在此需要注意的是,用new创建的是对象,直接构造函数实例的是转换方法,本质上还是原始值

    const value = "25"
    const number = Number(value) // number
    const number1 = new Number(value) // object
    

    Number的实例对象又toFixed()函数,toFiexd()函数可以将数值转化成带指定小数点的字符串。isInteger()函数可以判断一个数值是不是整数
    String可以通知chartAt()取得指定索引的字符,通过fromCharCode函数把指定编码链接成字符串

    String的方法

    String的方法一般分为字符串操作方法、字符串位置方法、字符串包含方法、trim方法、repeat方法、字符串迭代与解构、字符串模式匹配方法

    字符串操作方法

    字符串操作首先用到的是concat()方法,用于将一个或者多个字符串拼接成一个新的字符串。ES还提供给3个从字符串提取字符串的方法,分为为slice、substr和substring。这三个方法都返回调用他们的字符串的一个子字符串,而且都接收一个或者两个参数。第一个蚕食表示字符串开始的位置,第二个参数表示字符串结束的位置,对slice和substring而言,第二个参数表示字符串结束的位置,对substr而言,第二个参数表示字符串的长度。如果第二个参数为空,则表示从开始位置一直取到最后。三个方法在参数为负数的时候,表现的就差别很大了,slice()方法将所有的负数都当成字符串长度加上负数值,substr方法将第一个参数为负数的值加上字符串长度,第二个负数转换成0,substring()则是将所有的负参数转化成0

    字符串位置方法

    有两个方法用于在字符串中定位子字符串:indexOf()和lastIndexOf()。这两个方法从字符串中搜索字符串,并返回位置。两者的区别在于,indexOf()方法从字符串的头部开始查找,lastIndexOf()从字符串尾部查找字符串。这两个字符串都可以接收第二个参数,表示字符串搜索的位置。

    字符串包含方法

    在ES6增加了3个用于判断字符串是否包含另外一个字符串的方法,startsWith()、endsWith()和includes()这些方法都会从字符串中搜索传入的字符串,并返回一个是否包含的布尔值,startWith()检查开始于索引0的匹配项,endsWith()检查开始于索引(string.length-substring.length)的匹配项,而includes()检查整个字符串
    startsWith()和endsWith()方法都接收可选的第二个参数,表示开始搜索的位置。

    trim()

    trim()表示删除前后的空格。trimLeft()删除前空格trimRight()删除后空格

    repeat

    repeat()方法接收一个整数参数表示将字符串复制多少次

    字符串迭代方法

    字符串的原型上暴露了一个@@iterator方法,来表示迭代字符串的每个字符。可以手动使用迭代器

    let message = “abc”
    for(const c of messgae) {
      
    }
    const a = [...message]
    
    字符串大小写转换

    大小写转换包括4个方法,tolowerCase(),toLocaleLowerCase()、toUpperCase()

    字符串模式匹配

    match方法和RegExp对象的exec()方法相同。match()方法接收一个参数,可以是一个正则表达式,也可以是一个RegExp对象

    相关文章

      网友评论

          本文标题:基本引用类型

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