Object.prototype.toString() 语法
toString() 是 JavaScript Object 对象实例的一个方法,它用于返回一个对象的字符串表示。
语法:
obj.toString()说明:
toString() 方法不接收任何参数。
JavaScript 所有内置对象(如 Object、String、Array、Number、Boolean 等)都有 toString() 方法,它们通常会返回该对象的字符串表示(可能略有不同)。例如,数字 666.toString() 会返回 "666"。
对于其他内置对象的 toString() 方法,另请参阅:
此外,小伙伴们还要清楚以下几点。
- 虽然原始值(如字符串、数字、布尔值)本身不是对象,但当它们被强制转换为对象时(比如通过 String() 或隐式地调用其方法时),会调用其包装对象的 toString() 方法。
- Object.prototype.toString.call(value) 可以用于判断一个值的精确类型,即使是 null 和 undefined 也能正确处理。
Object.prototype.toString() 摘要
| 属于 | JavaScript Object 对象 |
|---|---|
| 使用频率 | 高 |
| 官方文档 | 查看 |
| MDN | 查看 |
Object.prototype.toString() 示例
接下来,我们通过几个简单的例子来讲解一下 toString() 方法是如何使用的。
示例 1:toString() 基本用法
const obj = {}; // Object 对象
const arr = []; // Array 对象
const fn = function() {}; // Function 对象
const date = new Date(); // Date 对象
const num = 123; // 原始值,但会调用其包装对象的 toString()
const str = "hello"; // 原始值,但会调用其包装对象的 toString()
const bool = true; // 原始值,但会调用其包装对象的 toString()
console.log(obj.toString()); // [object Object]
console.log(arr.toString()); // (空字符串,被 Array.prototype.toString() 重写)
console.log(fn.toString()); // 函数的源代码 (被 Function.prototype.toString() 重写)
console.log(date.toString()); // 日期的可读字符串 (被 Date.prototype.toString() 重写)
console.log(num.toString()); // "123" (被 Number.prototype.toString() 重写)
console.log(str.toString()); // "hello" (被 String.prototype.toString() 重写)
console.log(bool.toString()); // "true" (被 Boolean.prototype.toString() 重写)运行结果如下。
[object Object]
(空字符串)
function() {}
Fri Jan 02 2026 13:03:41 GMT+0800 (中国标准时间)
123
hello
true分析:
需要注意的是,除了普通的空对象 obj,其他大多数内置类型都重写了 toString()。
示例 2:使用 Object.prototype.toString.call() 判断精确类型
const obj = {}; // Object 对象
const arr = []; // Array 对象
const fn = function() {}; // Function 对象
const date = new Date(); // Date 对象
const num = 123; // 原始值,但会调用其包装对象的 toString()
const str = "hello"; // 原始值,但会调用其包装对象的 toString()
const bool = true; // 原始值,但会调用其包装对象的 toString()
console.log(Object.prototype.toString.call(obj));
console.log(Object.prototype.toString.call(arr));
console.log(Object.prototype.toString.call(fn));
console.log(Object.prototype.toString.call(date));
console.log(Object.prototype.toString.call(num));
console.log(Object.prototype.toString.call(str));
console.log(Object.prototype.toString.call(bool));运行结果如下。
[object Object]
[object Array]
[object Function]
[object Date]
[object Number]
[object String]
[object Boolean]分析:
Object.prototype.toString.call() 是一个非常有用的技巧,可以精确判断一个值的具体类型。它通过调用 Object.prototype.toString() 方法并结合 call() 方法来实现精确的类型检查。
示例 3:自定义对象重写 toString() 方法
class Product {
constructor(name, price) {
this.name = name;
this.price = price;
}
// 重写 toString() 方法
toString() {
return `产品:${this.name}, 价格:${this.price}`;
}
}
const laptop = new Product("小米 15 Pro", 5008);
const keyboard = new Product("华为 Mate 70", 7298);
console.log(laptop.toString());
console.log(keyboard.toString());
console.log(Object.prototype.toString.call(laptop));运行结果如下。
产品:小米 15 Pro, 价格:5008
产品:华为 Mate 70, 价格:7298
[object Object]分析:
我们可以为自己的类或对象实例重写 toString() 方法,以提供更具可读性或更有意义的字符串表示。需要注意的是,即使重写了 toString() 方法,Object.prototype.toString.call() 仍然能返回对象的原始内部类型。
