Apply your JS skills to key Mozilla projects as an MDN Fellow! http://mzl.la/MDNFellowship

mozilla
Los resultados de tu búsqueda

    Object.getOwnPropertyNames()

    This translation is incomplete. Please help translate this article from English.

    Resumen

    El método Object.getOwnPropertyNames() devuelve un array con todas las propiedades (numerables o no) encontradas en un objeto dado.

    Sintaxis

    Object.getOwnPropertyNames(obj)

    Parámetros

    obj
    El objeto cuyas propiedades directas, numerables y no-numerables, serán devueltas.

    Descripción

    Object.getOwnPropertyNames devuelve un array cuyos elementos son strings correspondientes a cada una de las propiedades encontradas directamente en obj. El orden de las propiedades numerables en el array coincide con el expuesto para for...in loop (o para Object.keys) con respecto a las propiedades del object. El orden de las propiedades no-numerables del array, y de éstas respecto a las numerables, no está definido.

    Ejemplos

    var arr = ["a", "b", "c"];
    print(Object.getOwnPropertyNames(arr).sort()); // imprime "0,1,2,length"
    
    // Objeto similar a Array
    var obj = { 0: "a", 1: "b", 2: "c"};
    print(Object.getOwnPropertyNames(obj).sort()); // imprime "0,1,2"
    
    // Imprime nombres de variables y valores usando Array.forEach
    Object.getOwnPropertyNames(obj).forEach(function(val, idx, array) {
      print(val + " -> " + obj[val]);
    });
    // imprime
    // 0 -> a
    // 1 -> b
    // 2 -> c
    
    // propiedad no-numerable 
    var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; }, enumerable: false } });
    my_obj.foo = 1;
    
    print(Object.getOwnPropertyNames(my_obj).sort()); // imprime "foo, getFoo"
    

    Si se quiere solo las propiedades numerables, ver Object.keys o usar un for...in loop (aunque esto devolvería propiedades numerables no directas del objeto pertenecientes a la cadena de prototype a la que pertenezca, a menos que finalmente se filtre con hasOwnProperty()).

    Items de la cadena prototype no se listan:

    function ParentClass () {
    }
    ParentClass.prototype.inheritedMethod = function () {
    };
    
    function ChildClass () {
      this.prop = 5;
      this.method = function () {};
    }
    ChildClass.prototype = new ParentClass;
    ChildClass.prototype.prototypeMethod = function () {
    };
    
    alert(
      Object.getOwnPropertyNames(
        new ChildClass() // ["prop", "method"]
      )
    )
    

    Get Non-Enumerable Only

    Aquí se usa la función Array.prototype.filter para quitar las keys numerables (obtenidas con Object.keys) de una lista con todas las keys (obtenida con Object.getOwnPropertynames) dejando solo las no-numerables.

    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) {
        //no encontrada en las keys de enum_only, por lo que se trata de una key numerable, se devuelve true para mantenerla en filter
        return true;
      } else {
        return false;
      }
    });
                
    console.log(nonenum_only);
    

    Especificaciones

    Especificación Status Comentario
    ECMAScript 5.1 (ECMA-262)
    The definition of 'Object.getOwnPropertyNames' in that specification.
    Standard Initial definition.
    Implemented in JavaScript 1.8.5
    ECMAScript 6 (ECMA-262)
    The definition of 'Object.getOwnPropertyNames' in that specification.
    Draft  

     Compatibilidad con Navegadores

    Feature Firefox (Gecko) Chrome Internet Explorer Opera Safari
    Basic support 4 (2.0) 5 9 12 5
    Feature Firefox Mobile (Gecko) Android IE Mobile Opera Mobile Safari Mobile
    Basic support ? ? ? ? ?

    Based on Kangax's compat table.

    SpiderMonkey-specific notes

    • Prior to SpiderMonkey 28 (Firefox 28 / Thunderbird 28 / SeaMonkey 2.25 / Firefox OS 1.3), Object.getOwnPropertyNames did not see unresolved properties of Error objects. This has been fixed in later versions (bug 724768).

    Ver también

    Etiquetas y colaboradores del documento

    Contributors to this page: teland
    Última actualización por: teland,