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.
    Release Candidate  

     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,
    Ocultar la barra lateral