字符串及其属性
我们可以调用字符串的length
或toUpperCase
这样的属性,但不能向字符串中添加任何新的属性。
let kim = "Kim";
kim.age = 88;
console.log(kim.age);
// → undefined
字符串、数字和布尔类型的值并不是对象,因此当你向这些值中添加属性时 JavaScript 并不会报错,但实际上你并没有将这些属性添加进去。前面说过,这些值是不变的,不能改变。
但这些类型包含一些内置属性。每个字符串中包含了若干方法供我们使用,最有用的方法可能就是slice
和indexOf
了,它们的功能与数组中的同名方法类似。
console.log("coconuts".slice(4, 7));
// → nut
console.log("coconut".indexOf("u"));
// → 5
一个区别是,字符串的indexOf
可以搜索包含多个字符的字符串,而相应的数组方法仅查找单个元素。
console.log("one two three".indexOf("ee"));
// → 11
trim
方法用于删除字符串中开头和结尾的空白符号(空格、换行符和制表符等符号)。
console.log(" okay \n ".trim());
// → okay
上一章中的zeroPad
函数也作为方法存在。 它被称为padStart
,接受所需的长度和填充字符作为参数。
console.log(String(6).padStart(3, "0"));
// → 006
你可以使用split
,在另一个字符串的每个出现位置分割一个字符串,然后再用join
把它连接在一起。
let sentence = "Secretarybirds specialize in stomping";
let words = sentence.split(" ");
console.log(words);
// → ["Secretarybirds", "specialize", "in", "stomping"]
console.log(words.join(". "));
// → Secretarybirds. specialize. in. stomping
可以用repeat
方法重复一个字符串,该方法创建一个新字符串,包含原始字符串的多个副本,并将其粘在一起。
console.log("LA".repeat(3));
// → LALALA
我们已经看到了字符串类型的length
属性。 访问字符串中的单个字符,看起来像访问数组元素(有一个警告,我们将在第 5 章中讨论)。
let string = "abc";
console.log(string.length);
// → 3
console.log(string[1]);
// → b