有没有一种方法可以检查纯普通的javascript对象,而不是其他任何特殊类型的对象(例如Date)?

我尝试使用instanceof,但是无法区分{}[]Date

例如,如果我要制作一个像这样的if树:

function foo(someVar){
  if (/*someVar is an {}*/) {
  } else if (/*someVar is an []*/) {
  } else { //someVar could be a String or a Date or anything
  }
}

如果有条件,我该如何先写?任何帮助将不胜感激,谢谢!

iCMS 回答:有没有一种方法可以检查纯普通的javascript对象,而不是其他任何特殊类型的对象(例如Date)?

检查某物是否为“普通对象”的第一件事就是要查看其是否没有原型。

所以我想我可以这样写:

function foo(someVar){
  if (typeof "someVar" === 'object' && someVar.prototype === undefined) {

  } else if (Array.isArray(someVar)) {

  } else {

  }
}
,

此问题已在单独的线程中回答

日期 How to check whether an object is a date?

数组 How to detect if a variable is an array

对象 Check if a value is an object in JavaScript

,

检查该值是否为数组类型,可以使用Array.isArray() 例如:

var first=Array.isArray([1,'fruits',3])
var second=Array.isArray('foo')
console.log(first)
console.log(second)

要检查值是否为对象类型,事情会有些困难,因为类型对象是诸如Function,array等太多类型的保护伞,但是您可以使用此函数,但这绝不会起作用适用于所有类型,因为它不会排除所有类型,但会排除大多数类型

 ob=[]
function isObject(obj) {
   if(obj === Object(obj)){
  return Array.isArray(obj)?false:(typeof obj === 'function'?false
  :(Object.prototype.toString.call(obj) === '[object Date]'?false
  :(Object.prototype.toString.call(obj) === '[object Number]'?false
  :(Object.prototype.toString.call(obj) === '[object Math]'?false:true))))}
  else 
  return false
}
console.log(isObject(ob))

要检查类型日期,可以使用此

Object.prototype.toString.call(obj) === '[object Date]
本文链接:https://www.f2er.com/1926988.html

大家都在问