Bienvenido a nuestro sitio web, ahora hallarás la resolución que andabas buscando.
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
- Enumerabilidad y titularidad de inmuebles
Object.getOwnPropertyNames()
for...in
in
- Guía de JavaScript: revisión de la herencia