Object.prototype.toLocaleString()

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

参见