else if (typeof obj === "object") { var type = Object.prototype.toString .call(obj) .replace("[object ", "") .replace("]", "") .toLowerCase(); console.log(type);
时间: 2024-04-10 17:30:26 浏览: 56
这段代码是用来判断一个变量的类型,并打印类型名称。
首先,通过 `typeof obj === "object"` 条件判断,检查变量 `obj` 是否为对象类型。如果是对象类型,则执行以下代码块。
在代码块中,使用 `Object.prototype.toString.call(obj)` 方法来获取对象的原始类型字符串表示。这个方法会返回一个以 "[object 类型]" 的形式表示的字符串。
接下来,通过使用 `.replace("[object ", "")` 和 `.replace("]", "")` 方法,将原始类型字符串中的 "[object " 和 "]" 替换为空字符串,从而得到纯粹的类型名称。
最后,使用 `.toLowerCase()` 方法将类型名称转换为小写,并将其打印到控制台中。
相关问题
function judgeType(obj) { if (obj === null) { console.log(String(obj)); } else if (typeof obj === "object") { var type = Object.prototype.toString .call(obj) .replace("[object ", "") .replace("]", "") .toLowerCase(); console.log(type); } else { console.log(typeof obj); } }
这段代码定义了一个名为 `judgeType` 的函数,用于判断传入参数的类型,并将结果打印到控制台。
首先,通过条件判断 `obj === null`,判断传入的参数是否为 `null`。如果是 `null`,则将 `obj` 转换为字符串并打印到控制台。
如果传入的参数不是 `null`,则进入下一个条件判断 `typeof obj === "object"`,检查变量 `obj` 是否为对象类型。如果是对象类型,则执行以下代码块。
在代码块中,使用 `Object.prototype.toString.call(obj)` 方法来获取对象的原始类型字符串表示。然后通过调用 `.replace("[object ", "")` 和 `.replace("]", "")` 方法,将原始类型字符串中的 "[object " 和 "]" 替换为空字符串,从而得到纯粹的类型名称。
最后,使用 `.toLowerCase()` 方法将类型名称转换为小写,并将其打印到控制台。
如果传入的参数既不是 `null` 也不是对象类型,则执行 `else` 代码块,并通过 `typeof obj` 将其类型直接打印到控制台。
object.prototype.tostring.call/apply();
object.prototype.toString.call/apply() 是 JavaScript 中的方法,用于获取一个对象的类型信息。
在 JavaScript 中,每个对象都有一个 toString() 方法,用于将对象转换为字符串。object.prototype.toString.call() 和 object.prototype.toString.apply() 都可以用于调用对象的 toString() 方法。但是由于 toString() 方法是对象原型的方法,不是直接继承的,因此需要通过 call() 或 apply() 来指定 this 对象。
调用 object.prototype.toString.call(obj) 或 object.prototype.toString.apply(obj) 的结果将返回 obj 对象的类型信息。这个类型信息是一个包含对象的类型的字符串,在大多数情况下表示对象的内部 [[Class]] 属性的值。
这个类型信息通常以 "[object 类型]" 的形式返回,其中类型可以是以下之一:
- "[object String]" 表示 obj 是一个字符串。
- "[object Number]" 表示 obj 是一个数字。
- "[object Boolean]" 表示 obj 是一个布尔值。
- "[object Undefined]" 表示 obj 是 undefined。
- "[object Null]" 表示 obj 是 null。
- "[object Object]" 表示 obj 是一个普通的对象。
- "[object Array]" 表示 obj 是一个数组对象。
- "[object Function]" 表示 obj 是一个函数对象。
通过调用 object.prototype.toString.call/apply() 方法,我们可以更准确地判断一个对象的类型,避免了 typeof 操作符的局限性。例如,使用 object.prototype.toString.call([]) 返回的结果为 "[object Array]",可以确定该对象是一个数组。
总之,object.prototype.toString.call/apply() 是一种用于获取对象类型的常用方法,用于更准确地判断对象的类型。
阅读全文