Object.toString().call()
时间: 2024-10-09 21:13:09 浏览: 21
`Object.prototype.toString.call()` 是一个用于获取JavaScript中任意对象类型的方法。它的工作原理是通过 `call()` 函数将 `toString()` 方法应用于给定的对象(作为第一个参数),使其能够在正确的上下文中运行,即使这个对象的原型链上的 `toString()` 已经被重写了。
**示例**:
```javascript
// 使用默认的toString方法,返回的是 "[object Type]"
let obj = {};
console.log(Object.prototype.toString.call(obj)); // 输出: "[object Object]"
// 如果对象是数组,toString被重写,我们使用call来获取原始类型信息
let arr = [];
console.log(Object.prototype.toString.call(arr)); // 输出: "[object Array]"
// 同理,对于其他内置对象如Boolean和Number
let bool = true;
let num = 123;
console.log(Object.prototype.toString.call(bool)); // 输出: "[object Boolean]"
console.log(Object.prototype.toString.call(num)); // 输出: "[object Number]"
```
相关问题
object.tostring和object.tostring.call有什么区别
`Object.prototype.toString()` 和 `Object.prototype.toString.call()` 的区别在于它们的使用方法和上下文对象(也就是 `this` 的指向)不同。
`Object.prototype.toString()` 是 `Object` 原型对象上的方法,可以被任何一个对象调用,用来返回当前对象的字符串表示形式。如果直接调用 `Object.prototype.toString()` 方法,则返回的是 `[object Object]` 字符串,表示当前对象是一个普通的 Object 类型。如果需要检测其他类型的对象,可以使用 `call` 或 `apply` 方法来改变 `this` 上下文对象的指向,从而返回对应类型的字符串表示形式。
`Object.prototype.toString.call()` 方法则是直接调用 `Object` 原型对象上的 `toString` 方法,并将需要检测的对象作为参数传递进去,从而返回该对象的字符串表示形式,比如 `[object Array]` 或 `[object Date]` 等。这个方法常用于检测数据类型,通过改变 `call()` 方法中的 `this` 上下文对象,可以检测出不同类型的对象。
Object.prototype.toString和 Object.prototype.toString.call
Object.prototype.toString是JavaScript中的一个方法,用于返回一个表示对象的字符串。它的主要作用是获取对象的类型信息。
而Object.prototype.toString.call是通过调用Object.prototype.toString方法,并将其作为函数来调用,可以用来获取任意值的类型信息。
例如,我们可以使用Object.prototype.toString.call来获取一个变量的类型信息,如下所示:
```javascript
const obj = {};
const arr = [];
const str = "Hello";
const num = 123;
const bool = true;
console.log(Object.prototype.toString.call(obj)); // [object Object]
console.log(Object.prototype.toString.call(arr)); // [object Array]
console.log(Object.prototype.toString.call(str)); // [object String]
console.log(Object.prototype.toString.call(num)); // [object Number]
console.log(Object.prototype.toString.call(bool)); // [object Boolean]
```
通过调用Object.prototype.toString.call并传入不同的值,我们可以获取到对应值的类型信息。
阅读全文