Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

157
Views
¿Qué función es mejor para cubrir la mayoría de los casos para verificar si un dato es Objeto o no entre las 2 funciones a continuación?

Por lo general, uso esta condición para verificar si un valor de datos es Objeto o no:

 // function A export const isObject = item => { return item && item.constructor === Object; };

ya que es más fácil de entender, pero mi amigo generalmente usa esta función para verificar datos con la misma condición que la anterior isObject(value) {} :

 // function B export function isObject(value) { return typeof value === "object" && !Array.isArray(value) && value !== null; }

nos confundimos cuando hay un conflicto cuando queremos fusionarnos con la última rama, así que aquí está la pregunta, Between function A & B which one is better to cover most case regarding object data? , ¿Puedes explicarlo también para que tenga un mejor conocimiento al respecto?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Suponiendo que desea identificar objetos simples que heredan de Object.prototype y no son subclases de otra cosa:

El primer enfoque podría ser engañado porque la propiedad .constructor no se refiere necesariamente a la función constructora utilizada para crear la función: un objeto podría asignar otra cosa a esa propiedad.

 const isObject = item => { return item && item.constructor === Object; }; const a = []; console.log(a.constructor == Array); a.constructor = Object; console.log(a.constructor === Object); console.log(isObject(a));

El segundo enfoque podría ser engañado porque hay otros tipos de cosas además de las matrices que heredan de Object.prototype que no son objetos simples ni matrices, como HTMLElements y muchas, muchas otras cosas.

 function isObject(value) { return typeof value === "object" && !Array.isArray(value) && value !== null; } console.log(isObject(document.body)); console.log(isObject(new Proxy({}, {})));

Así que prefiero Object.getPrototypeOf , con el que puede estar bastante seguro de que el prototipo interno inmediato del valor es Object.prototype , y que no es nada más especial.

 const isObject = item => Object.getPrototypeOf(item) === Object.prototype; console.log(isObject([])); console.log(isObject({})); console.log(isObject(document));

Podría fallar si se sobrescribe Object.getPrototypeOf , por supuesto, pero si estás en ese punto, casi nada es confiable de todos modos.

Tenga en cuenta que muchas cosas se heredan de Object.prototype que se Number.prototype true si desea excluir esos tipos, puede verificar si existe una propiedad .constructor .

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!