【问题标题】:A more refined Javascript typeof? [duplicate]更精致的 Javascript typeof? [复制]
【发布时间】:2016-06-05 20:13:23
【问题描述】:

有没有办法让 typeof 返回一个对象是什么?

typeof {};

返回“对象”

typeof [];

也返回“对象”。 js中有没有办法返回“数组”?

除此之外,有没有办法判断一个对象是 DOM 对象、javascript 对象还是其他对象?

【问题讨论】:

  • developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 因为一切都是物体,你必须玩游戏才能获得更多细节。
  • 参见 instanceof [] instanceof Arraytrue ({}) instanceof Arrayfalse 这也适用于非数组类型。 document.body instanceof Elementtrue
  • 如果你真的需要编写代码来检查一个变量是一个 DOM 元素还是一个 JavaScript 对象,你可能应该问为什么你首先要在同一个函数中得到这两者。跨度>
  • 正如@arcyqwerty 提到的,你可以像在这个小提琴中那样做:jsfiddle.net/gmjy3ybv

标签: javascript jquery object


【解决方案1】:

您可以使用Array.isArray()

如果对象是数组,Array.isArray() 方法返回 true,否则返回 false。

【讨论】:

  • 它不返回对象是什么
【解决方案2】:

您不能扩展 typeof 运算符,但为了更好的类型检查,您可以(ab)使用 Object.prototype.toString

Object.prototype.toString.call([]) === '[object Array]'
Object.prototype.toString.call(document) === '[object HTMLDocument]`

【讨论】:

  • 这是一个非常低效的解决方案。你应该使用the instanceof operator
  • instanceof返回对象是什么所以这是唯一的答案
猜你喜欢
  • 2020-08-02
  • 2013-11-17
  • 1970-01-01
  • 2015-06-04
  • 2017-08-06
  • 2012-08-02
  • 2015-07-28
  • 1970-01-01
  • 2014-12-15
相关资源
最近更新 更多