Array.prototype.toString()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
toString()
方法返回一个字符串,表示指定的数组及其元素。
尝试一下
const array1 = [1, 2, "a", "1a"];
console.log(array1.toString());
// Expected output: "1,2,a,1a"
语法
js
toString()
返回值
一个表示数组元素的字符串。
描述
Array
对象覆盖了 Object
的 toString
方法。数组的 toString
方法实际上在内部调用了 join()
方法来拼接数组并返回一个包含所有数组元素的字符串,元素之间用逗号分隔。如果 join
方法不可用或者不是函数,则会使用 Object.prototype.toString
来代替,并返回 [object Array]
。
js
const arr = [];
arr.join = 1; // 将 `join` 重新赋值为非函数的值
console.log(arr.toString()); // [object Array]
console.log(Array.prototype.toString.call({ join: () => 1 })); // 1
当数组需要被表示为文本值,或者当数组在字符串拼接中被引用时,JavaScript 会自动调用 toString()
方法。
示例
使用 toString()
js
const array1 = [1, 2, "a", "1a"];
console.log(array1.toString()); // "1,2,a,1a"
在稀疏数组中使用 toString()
与 join()
的行为一致,toString()
将空槽视为 undefined
并生成一个额外的分隔符:
js
console.log([1, , 3].toString()); // '1,,3'
在非数组对象中使用 toString()
toString()
是通用的。它期望 this
具有 join()
方法;如果不存在,则使用 Object.prototype.toString()
。
js
console.log(Array.prototype.toString.call({ join: () => 1 }));
// 1; 一个数字
console.log(Array.prototype.toString.call({ join: () => undefined }));
// undefined
console.log(Array.prototype.toString.call({ join: "not function" }));
// "[object Object]"
规范
Specification |
---|
ECMAScript® 2025 Language Specification # sec-array.prototype.tostring |
浏览器兼容性
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
toString |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.