Javascript:如何测试一个对象是一个对象(而不是数组或字符串)?

标签 javascript collections

我知道(数组的实例),但是我如何测试一个对象?

var c = {};

if ( c instanceof XXXX) {
   // should get thru
}

var s = "abscdef";

if ( s instanceof XXXX) {
   // should not get thru
}

var a = [];

if ( a instanceof XXXX) {
   // should not get thru
}

最佳答案

function isObject(c) {
  return c instanceof Object 
    && !(c instanceof Array) 
    && !(c instanceof Function)
}

ArrayFunction 检查是必要的,因为 JavaScript 数组也是对象(假设您不希望函数返回 true对于数组或函数参数)

示例输出:

isObject([])
> false

isObject({})
> true

isObject(1)
> false

isObject('something')
> false

isObject(isObject)
> false

关于Javascript:如何测试一个对象是一个对象(而不是数组或字符串)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24138582/

相关文章:

javascript - AngularJS:翻译服务调用返回不可用的$$state对象

javascript - 使用 JavaScript 验证密码和名字

javascript - 在 Twitter Bootstrap 轮播中显示下一张和上一张图像

c# - 为什么 Array.IndexOf 不像 List<T> 那样检查 IEquatable?

javascript - 在发起/来源处阻止跨域 XHR 或获取调用

javascript - JavaScript 中的 ({}) 和 {} 有区别吗?

java - 如何将类的一个参数的值复制到另一个Collection对象?

java - 具有最快(并发)添加操作的集合

java - 在构造函数中制作 Set<String> 的常规副本

java - 允许重复的 TreeSet 或 TreeMap