字符串及其属性

我们可以调用字符串的lengthtoUpperCase这样的属性,但不能向字符串中添加任何新的属性。

  1. let kim = "Kim";
  2. kim.age = 88;
  3. console.log(kim.age);
  4. // → undefined

字符串、数字和布尔类型的值并不是对象,因此当你向这些值中添加属性时 JavaScript 并不会报错,但实际上你并没有将这些属性添加进去。前面说过,这些值是不变的,不能改变。

但这些类型包含一些内置属性。每个字符串中包含了若干方法供我们使用,最有用的方法可能就是sliceindexOf了,它们的功能与数组中的同名方法类似。

  1. console.log("coconuts".slice(4, 7));
  2. // → nut
  3. console.log("coconut".indexOf("u"));
  4. // → 5

一个区别是,字符串的indexOf可以搜索包含多个字符的字符串,而相应的数组方法仅查找单个元素。

  1. console.log("one two three".indexOf("ee"));
  2. // → 11

trim方法用于删除字符串中开头和结尾的空白符号(空格、换行符和制表符等符号)。

  1. console.log(" okay \n ".trim());
  2. // → okay

上一章中的zeroPad函数也作为方法存在。 它被称为padStart,接受所需的长度和填充字符作为参数。

  1. console.log(String(6).padStart(3, "0"));
  2. // → 006

你可以使用split,在另一个字符串的每个出现位置分割一个字符串,然后再用join把它连接在一起。

  1. let sentence = "Secretarybirds specialize in stomping";
  2. let words = sentence.split(" ");
  3. console.log(words);
  4. // → ["Secretarybirds", "specialize", "in", "stomping"]
  5. console.log(words.join(". "));
  6. // → Secretarybirds. specialize. in. stomping

可以用repeat方法重复一个字符串,该方法创建一个新字符串,包含原始字符串的多个副本,并将其粘在一起。

  1. console.log("LA".repeat(3));
  2. // → LALALA

我们已经看到了字符串类型的length属性。 访问字符串中的单个字符,看起来像访问数组元素(有一个警告,我们将在第 5 章中讨论)。

  1. let string = "abc";
  2. console.log(string.length);
  3. // → 3
  4. console.log(string[1]);
  5. // → b