Object.prototype.toLocaleString()

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

Object 实例的 toLocaleString() 方法返回一个表示该对象的字符串。此方法旨在由派生对象为了特定区域设置的目的而覆盖。

试一试

const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

console.log(date.toLocaleString("ar-EG"));
// Expected output: "٢٠‏/١٢‏/٢٠١٢ ٤:٠٠:٠٠ ص"

const number = 123456.789;

console.log(number.toLocaleString("de-DE"));
// Expected output: "123.456,789"

语法

js
toLocaleString()

参数

无。但是,所有覆盖此方法的对象都应最多接受两个参数,分别对应于 localesoptions,例如 Number.prototype.toLocaleString。参数位置不应用于任何其他目的。

返回值

调用 this.toString() 的返回值。

描述

所有继承自 Object.prototype 的对象(即,除 null-prototype 对象之外的所有对象)都继承 toLocaleString() 方法。 ObjecttoLocaleString 返回调用 this.toString() 的结果。

此函数用于为对象提供一个通用的 toLocaleString 方法,尽管并非所有对象都能使用它。在核心语言中,这些内置对象会覆盖 toLocaleString 以提供特定于区域设置的格式设置。

示例

使用基础 toLocaleString() 方法

基础 toLocaleString() 方法简单地调用 toString()

js
const obj = {
  toString() {
    return "My Object";
  },
};
console.log(obj.toLocaleString()); // "My Object"

Array toLocaleString() 覆盖

Array.prototype.toLocaleString() 用于通过调用每个元素的 toLocaleString() 方法并使用特定于区域设置的分隔符连接结果来将数组值打印为字符串。例如:

js
const testArray = [4, 7, 10];

const euroPrices = testArray.toLocaleString("fr", {
  style: "currency",
  currency: "EUR",
});
// "4,00 €,7,00 €,10,00 €"

Date toLocaleString() 覆盖

Date.prototype.toLocaleString() 用于打印出更适合特定区域设置的日期显示。例如:

js
const testDate = new Date();
// "Fri May 29 2020 18:04:24 GMT+0100 (British Summer Time)"

const deDate = testDate.toLocaleString("de");
// "29.5.2020, 18:04:24"

const frDate = testDate.toLocaleString("fr");
// "29/05/2020, 18:04:24"

Number toLocaleString() 覆盖

Number.prototype.toLocaleString() 用于打印出更适合特定区域设置的数字显示,例如,带有正确的分隔符。例如:

js
const testNumber = 2901234564;
// "2901234564"

const deNumber = testNumber.toLocaleString("de");
// "2.901.234.564"

const frNumber = testNumber.toLocaleString("fr");
// "2 901 234 564"

规范

规范
ECMAScript® 2026 语言规范
# sec-object.prototype.tolocalesstring

浏览器兼容性

另见