--- title: Object.prototype.propertyIsEnumerable() slug: Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable tags: - JavaScript - Objecto - Property - metodo translation_of: Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable original_slug: Web/JavaScript/Referencia/Objetos_globales/Object/propertyIsEnumerable ---
El método propertyIsEnumerable()
regresa un Boleano indicando si la propiedad especificada es enumerable.
obj.propertyIsEnumerable(prop)
prop
Todos los objetos tienen un método propertyIsEnumerable
. Este método puede determinar si la propiedad especificada en el objeto puede ser enumerada por un ciclo {{jsxref("Statements/for...in", "for...in")}}, con la excepción de propiedades heredadas a través de prototype. Si el objeto no tiene la propiedad especificada, este método regresa un valor false
.
propertyIsEnumerable
El siguiente ejemplo muestra el uso de propertyIsEnumerable
en objetos y arrays:
var o = {}; var a = []; o.prop = 'es enumerable'; a[0] = 'es enumerable'; o.propertyIsEnumerable('prop'); // regresa true a.propertyIsEnumerable(0); // regresa true
El siguiente ejemplo demuestra la enumerabilidad de las propiedades definidas por el usuario contra las predefinidas:
var a = ['es enumerable']; a.propertyIsEnumerable(0); // regresa true a.propertyIsEnumerable('length'); // regresa false Math.propertyIsEnumerable('random'); // regresa false this.propertyIsEnumerable('Math'); // regresa false
var a = []; a.propertyIsEnumerable('constructor'); // regresa false function primerConstructor() { this.propiedad = 'no es enumerable'; } primerConstructor.prototype.primerMetodo = function() {}; function segundoConstructor() { this.metodo = function() { return 'es enumerable'; }; } secondConstructor.prototype = new primerConstructor; secondConstructor.prototype.constructor = segundoConstructor; var o = new segundoConstructor(); o.propiedadArbitraria = 'is enumerable'; o.propertyIsEnumerable('propiedadArbitraria '); // regresa true o.propertyIsEnumerable('metodo'); // regresa true o.propertyIsEnumerable('propiedad'); // regresa false o.propiedad = 'es enumerable'; o.propertyIsEnumerable('propiedad'); // regresa true // Regresan false por estar en el prototipo el cual no es // considerado por propertyIsEnumerable (a pesar de que las dos ultimas son // iterables con un for-in) o.propertyIsEnumerable('prototype'); // regresa false (como en JS 1.8.1/FF3.6) o.propertyIsEnumerable('constructor'); // regresa false o.propertyIsEnumerable('firstMethod'); // regresa false
Especificación | Estatus | Comentario |
---|---|---|
{{SpecName('ES3')}} | {{Spec2('ES3')}} | Definición inicial. |
{{SpecName('ES5.1', '#sec-15.2.4.7', 'Object.prototype.propertyIsEnumerable')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES6', '#sec-object.prototype.propertyisenumerable', 'Object.prototype.propertyIsEnumerable')}} | {{Spec2('ES6')}} |
Al inicio de JavaScript 1.8.1 (in Firefox 3.6), propertyIsEnumerable('prototype')
regresa false
en lugar de true
; esto hace que el resultado cumpla con la especificación de ECMAScript 5.