Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

158
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda