los Object.getOwnPropertyNames() El método devuelve un array de todas las propiedades (incluidas las propiedades no enumerables, excepto las que utilizan Símbolo) que se encuentran directamente en un objeto determinado.

Sintaxis

Object.getOwnPropertyNames(obj)

Parámetros

obj
Objeto cuyas propiedades enumerables y no enumerables deben devolverse.

Valor devuelto

Un array de cadenas que corresponden a las propiedades que se encuentran directamente en el objeto dado.

Descripción

Object.getOwnPropertyNames() devuelve un array cuyos elementos son cadenas correspondientes a las propiedades enumerables y no enumerables que se encuentran directamente en un objeto dado obj. El orden de las propiedades enumerables en el array es consistente con el orden expuesto por un for...in bucle (o por Object.keys()) sobre las propiedades del objeto. Según ES6, el entero keys del objeto (tanto enumerable como no enumerable) se agregan en orden ascendente al array primero, seguido por el string keys en el orden de inserción.

En ES5, si el argumento de este método no es un objeto (una primitiva), provocará una TypeError. En ES2015, un argumento que no sea de objeto será forzado a un objeto.

Object.getOwnPropertyNames('foo');// TypeError: "foo" is not an object (ES5 code)

Object.getOwnPropertyNames('foo');// ["0", "1", "2", "length"]  (ES2015 code)

Ejemplos de

Usando Object.getOwnPropertyNames ()

var arr =['a','b','c'];
console.log(Object.getOwnPropertyNames(arr).sort());// .sort() is an array method.// logs ["0", "1", "2", "length"]// Array-like objectvar obj =0:'a',1:'b',2:'c';
console.log(Object.getOwnPropertyNames(obj).sort());// .sort() is an array method.// logs ["0", "1", "2"]// Logging property names and values using Array.forEach
Object.getOwnPropertyNames(obj).forEach(function(val, idx, array)
    console.log(val +' -> '+ obj[val]););// logs// 0 -> a// 1 -> b// 2 -> c// non-enumerable propertyvar my_obj = Object.create(,
  getFoo:value:function()returnthis.foo;,
    enumerable:false);
my_obj.foo =1;

console.log(Object.getOwnPropertyNames(my_obj).sort());// logs ["foo", "getFoo"]

Si solo desea las propiedades enumerables, consulte Object.keys() o usa un for...in bucle (tenga en cuenta que esto también devolverá propiedades enumerables encontradas a lo largo de la cadena del prototipo para el objeto a menos que este último se filtre con hasOwnProperty()).

Los elementos de la cadena de prototipos no se enumeran:

functionParentClass()ParentClass.prototype.inheritedMethod=function();functionChildClass()this.prop =5;this.method=function();ChildClass.prototype =newParentClass;ChildClass.prototype.prototypeMethod=function();

console.log(
  Object.getOwnPropertyNames(newChildClass()// ["prop", "method"]));

Obtenga solo propiedades no enumerables

Esto usa el Array.prototype.filter() función para eliminar el enumerable keys (obtenida con Object.keys()) de una lista de todos keys (obtenida con Object.getOwnPropertyNames()) dando así sólo lo no enumerable keys como salida.

var target = myObject;var enum_and_nonenum = Object.getOwnPropertyNames(target);var enum_only = Object.keys(target);var nonenum_only = enum_and_nonenum.filter(function(key)var indexInEnum = enum_only.indexOf(key);if(indexInEnum ==-1)// Not found in enum_only keys,// meaning that the key is non-enumerable,// so return true so we keep this in the filterreturntrue;elsereturnfalse;);

console.log(nonenum_only);

Especificaciones

Especificación
Especificación del lenguaje ECMAScript (ECMAScript)
# sec-object.getownpropertynames

Compatibilidad del navegador

Escritorio Móvil
Cromo Borde Firefox explorador de Internet Ópera Safari WebView Android Chrome Android Firefox para Android Opera Android Safari en IOS Internet de Samsung
getOwnPropertyNames 5 12 4 9 12 5 1 18 4 12 5 1.0

Ver también