espaƱol ejemplos descargar definicion curso caracteristicas javascript

ejemplos - javascript html



Object.getOwnPropertyNames vs Object.keys (3)

Hay una pequeña diferencia. Object.getOwnPropertyNames(a) devuelve todas las propiedades propias del objeto a . Object.keys(a) devuelve todas las propiedades propias enumerables . Significa que si define las propiedades de su objeto sin hacer enumerable: false alguno de ellos enumerable: false estos dos métodos le darán el mismo resultado.

Es fácil de probar:

var a = {}; Object.defineProperties(a, { one: {enumerable: true, value: ''one''}, two: {enumerable: false, value: ''two''}, }); Object.keys(a); // ["one"] Object.getOwnPropertyNames(a); // ["one", "two"]

Si define una propiedad sin proporcionar el descriptor de atributos de propiedad (lo que significa que no usa Object.defineProperties ), por ejemplo:

a.test = 21;

entonces tal propiedad se convierte en enumerable automáticamente y ambos métodos producen la misma matriz.

¿Cuál es la diferencia entre Object.getOwnPropertyNames y Object.keys en javascript? También se apreciarán algunos ejemplos.


Otra diferencia es en el caso de que el método Object.getOwnPropertyNames de la matriz devuelva una propiedad adicional que es la length .

var x = ["a", "b", "c", "d"]; Object.keys(x); //[ ''0'', ''1'', ''2'', ''3'' ] Object.getOwnPropertyNames(x); //[ ''0'', ''1'', ''2'', ''3'', ''length'' ]


Otra diferencia es que (al menos con nodejs) la función "getOwnPropertyNames" no garantiza el orden de las claves, por eso usualmente uso la función "keys":

Object.keys(o).forEach(function(k) { if (!o.propertyIsEnumerable(k)) return; // do something... });