if (someObject.member && someObject.member.member &&
someObject.member.member.member && someObject.member.member.member.value) ...
o parecida:
var val = foo.bar && foo.bar.jim && foo.bar.jim.jam && foo.bar.jim.jam.value;
esto no va a 'trabajar' o ningún valor particular, pasa a ser null
, false
, 0
, o ""
(una cadena vacía), pero con la posible excepción del valor final, parece poco probable que sea el caso.
Además, tenga en cuenta que typeof ____ !== "undefined"
no es la prueba correcta para ver si un objeto tiene una propiedad. En su lugar, debe usar ___ in object
, p. if ("member" in someObject)
. Esto se debe a que puede establecer una propiedad en un valor explícito de undefined
, que es diferente de eliminarlo con delete someObject.member
.
Se ve bien. Me gusta el enfoque de bucle, pero ¿cómo funciona __typeof obj === "object" __ help exactamente? ¿No es cierto que typeof puede devolver objetos para null y array también? – JustcallmeDrago
@JustcallmeDrago: Cierto ... no importaría demasiado para la matriz, pero fallaría para 'null'. Entonces, quizás sea mejor agregar un cheque para nulo también. Agregué la prueba porque ''valor 'en' arrojaría un error. Se agregó la prueba 'null'. –
@Felix: Ya veo. Realmente me gusta la cuerda como argumento, pero también la simplicidad de la respuesta de Patrick. ¿Es tan seguro como el tuyo? ¿Es tan rápido? – JustcallmeDrago