庞大的包装类String的原型上都有哪些东西

134 阅读4分钟

「这是我参与11月更文挑战的第26天,活动详情查看:2021最后一次更文挑战

我们常常定义一个字符串,并且字符串可以使用某个方法。你是奇怪,按道理来说他是原始值,身上不应该有方法和属性才对,为什么会这样呢?

这其实是JS会把它包装成一个对象,叫包装类对象,当调用某个属性时,其实是调用对应包装类身上的东西。所有字符串值类型的东西调用某给属性调用的就是String原型上的东西

下面来看看String的原型上都有哪些东西吧

  1. length属性:返回字符串长度
  2. charAt方法:返回指定位置的字符;位置从0开始
  3. charCodeAt方法:返回指定位置的字符的Unicode编码
  4. concat方法:跟数组中的concat类似,用于连接两个字符串,返回新的字符串
  5. slice方法:跟数组中的slice也类似,用于返回从原字符串中截取的子字符串,不改变原字符串;传参规则跟数组中的slice方法一模一样:
    用于从原字符串截取子字符串并返回,不改变原字符串。
    当有两个参数时:第一个表示开始位,第二个是结束位(不含该位置)
    只有一个参数时:则表示从该位开始,截取到最后并返回
    不传参时:相当于是截取了整个字符串,可以理解为复制了一个一样的值
    如果参数是负值:表示从倒数位置
    如果第一个参数大于第二个参数:如slice(3,1),方法返回一个空字符串
  6. substring方法:也使用从原字符串中截取子字符串并返回,但有一些奇怪的规则,因此很多人不建议使用这个方法,优先使用slice。
  7. substr方法:也是从原字符串取出子字符串并返回;规则跟数组中的splice有点点相似:
    如果两个参数:第一个参数表示开始位,第二个参数表示截取的子字符串的长度
    当只有一个参数时:则表示从开始位开始,截取到原字符串最后
    如果第一个参数是负数:表示倒数计算的字符位置
    如果第二个参数是负数,将被自动转为0即截0位,因此会返回空字符串
  8. indexOf()lastIndexOf():跟ES5中数组的indexOf和lastIndexOf类似,用于查找指定字符串在原字符串出现的位置,如果没有找到返回-1
    indexOf从字符串头部开始匹配,lastIndexOf从尾部开始匹配
    接受第二个参数时,indexOf第二个参数表示从该位置开始向后匹配;lastIndexOf第二个参数表示从该位置起向前匹配
  9. trim():用于去除字符串两端的空格,返回去除空格后的新字符串,不改变原字符串
  10. toLowerCase():用于将字符串全部转为小写形式的字符串返回,不改变原字符串
  11. toUpperCase():用于将字符串全部转为大写形式的字符串返回,不改变原字符串
  12. localeCompare():比较两个字符串Unicode编码大小,第一个大于第二个返回1,第一个小于第二个返回-1,相等返回0
  13. match():通过正则匹配原字符串是否有某个子字符串,返回一个数组,成员为匹配的第一个字符串。如果没有找到匹配,则返回null
  14. search():查找字符串中是否有某个字符串。返回值为匹配的第一个位置。如果没有找到匹配,则返回-1。
  15. replace():用于替换匹配的子字符串,一般情况下只替换第一个匹配(除非使用带有g修饰符的正则表达式)
  16. split():将字符串通过指定分隔符拆分成数组。按照什么拆分,什么就没有了
  17. includes:判断字符中是否包含什么,返回true或false
  18. startsWith:判断是不是以某字符串开头,返回true或false
  19. endsWith:判断是不是以某字符串结尾,返回true或false
  20. repeat():返回重复连接指定次数的字符串
  21. trimLeft()trimStart():去除左边空格
  22. trimRight()trimEnd():去除右边空格