Al verificar si existe un atributo en un objeto, ¿qué enfoque es mejor: if (Obj.attr) o if ('attr' in Obj) ?
Lo mejor para usar es hasOwnProperty()
hasOwnProperty verificará solo aquellas propiedades que pertenecen solo al objeto en cuestión y no las heredadas (es decir, de su Prototipo).
El uso de 'attr' en Obj devolverá también aquellas propiedades que se heredan. El uso de Obj.attr obtendrá el valor de ese atributo.
Por ejemplo, digamos que tenemos el objeto:
var obj = { name: "John", age: "32" } 'name' in obj; // returns true obj.hasOwnProperty("name"); // returns true obj.name; // returns "John" 'toString' in obj; //returns true obj.hasOwnProperty("toString"); //returns false obj.toString; // returns "toString" function defintion from prototypeDebe evaluar si attr se puede determinar como falso (nulo, 0, "", etc.). Si es así, es posible que if (Obj.attr) no se active con la intención de verificar si el atributo existe.
Si desea verificar el atributo en el objeto original, usar hasOwnProperty es la forma más ideal.
if (Obj.hasOwnProperty('attr')O
Compruebe si el atributo está estrictamente indefinido
if (Obj.attr !== undefined)