los hasOwnProperty() El método devuelve un booleano que indica si el objeto tiene la propiedad especificada como su propia propiedad (en lugar de heredarla).

Sintaxis

hasOwnProperty(prop)

Parámetros

apuntalar
los String nombre o Símbolo de la propiedad a probar.

Valor devuelto

A Boolean indicando si el objeto tiene o no la propiedad especificada como propiedad propia.

Descripción

Todos los descendientes de Object heredar el hasOwnProperty método. Este método se puede utilizar para determinar si un objeto tiene la propiedad especificada como propiedad directa de ese objeto; a diferencia del in operador, este método no busca una propiedad en la cadena de prototipos del objeto. Si una Object es un Array, hasOwnProperty El método puede comprobar si existe un índice.

Nota

hasOwnProperty devoluciones true incluso si el valor de la propiedad es null o undefined.

o =newObject();
o.propOne =null;
o.hasOwnProperty('propOne');// returns true
o.propTwo =undefined;
o.hasOwnProperty('propTwo');// returns true

Ejemplos de

Usando hasOwnProperty para probar la existencia de una propiedad

El siguiente ejemplo determina si el o el objeto contiene una propiedad llamada prop:

o =newObject();
o.hasOwnProperty('prop');// returns false
o.prop ='exists';
o.hasOwnProperty('prop');// returns true

Propiedades directas vs heredadas

El siguiente ejemplo diferencia entre propiedades directas y propiedades heredadas a través de la cadena de prototipos:

o =newObject();
o.prop ='exists';
o.hasOwnProperty('prop');// returns true
o.hasOwnProperty('toString');// returns false
o.hasOwnProperty('hasOwnProperty');// returns false

Iterando sobre las propiedades de un objeto

El siguiente ejemplo muestra cómo iterar sobre las propiedades de un objeto sin ejecutar propiedades heredadas. Tenga en cuenta que el for...in El bucle ya está iterando solo elementos enumerables, por lo que no se debe suponer, basándose en la falta de propiedades no enumerables que se muestran en el bucle, que hasOwnProperty se limita estrictamente a elementos enumerables (como con Object.getOwnPropertyNames()).

var buz =
  fog:'stack';for(var name in buz)if(buz.hasOwnProperty(name))
    console.log('this is fog ('+
      name +') for sure. Value: '+ buz[name]);else
    console.log(name);// toString or something else

Usando hasOwnProperty como nombre de propiedad

JavaScript no protege el nombre de la propiedad hasOwnProperty; por tanto, si existe la posibilidad de que un objeto pueda tener una propiedad con este nombre, es necesario utilizar un externohasOwnProperty para obtener resultados correctos:

var foo =hasOwnProperty:function()returnfalse;,
  bar:'Here be dragons';

foo.hasOwnProperty('bar');// always returns false// Use another Object's hasOwnProperty// and call it with 'this' set to foo().hasOwnProperty.call(foo,'bar');// true// It's also possible to use the hasOwnProperty property// from the Object prototype for this purposeObject.prototype.hasOwnProperty.call(foo,'bar');// true

Tenga en cuenta que en el último caso no hay objetos recién creados.

Especificaciones

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

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
hasOwnProperty 1 12 1 5.5 5 3 1 18 4 10.1 1 1.0

Ver también