Object.prototype.toLocaleString()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2017.

toLocaleString() 方法返回一个表示对象的字符串。该方法旨在由派生对象重写,以达到其特定于语言环境的目的。

尝试一下

语法

js
toLocaleString()

参数

没有参数。但是,重写此方法的所有对象最多只能接受两个参数,分别对应于 localesoptions,例如 Date.prototype.toLocaleString。这些参数位置不应该用于任何其他目的。

返回值

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

描述

所有继承 Object.prototype(也就是说,除了 null 原型对象)的对象都继承了 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"

规范

Specification
ECMAScript Language Specification
# sec-object.prototype.tolocalestring

浏览器兼容性

BCD tables only load in the browser

参见