Bienvenido a nuestro sitio, en este lugar hallarás la respuesta a lo que necesitas.
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
- Enumerabilidad y titularidad de inmuebles
Object.prototype.hasOwnProperty()
Object.prototype.propertyIsEnumerable()
Object.create()
Object.keys()
Array.forEach()
Tienes la posibilidad difundir este enunciado si te fue útil.