Considerar:
function Shape() {
this.name = "Generic";
this.draw = function() {
return "Drawing " + this.name + " Shape";
};
}
function welcomeMessage()
{
var shape1 = new Shape();
//alert(shape1.draw());
alert(shape1.hasOwnProperty(name)); // This is returning false
}
.welcomeMessage
llamado en el body.onload
evento.
Esperaba shape1.hasOwnProperty(name)
devolver verdadero, pero está volviendo falso.
¿Cuál es el comportamiento correcto?
javascript
Thiyaneshwaran S
fuente
fuente
"name"
diferencia dename
Respuestas:
hasOwnProperty
es una función JavaScript normal que toma un argumento de cadena.Cuando llama,
shape1.hasOwnProperty(name)
le está pasando el valor de laname
variable (que no existe), tal como lo haría si escribieraalert(name)
.Es necesario llamar
hasOwnProperty
con una cadena que contienename
, como este:shape1.hasOwnProperty("name")
.fuente
hasOwnProperty
espera el nombre de la propiedad como una cadena, por lo que seríashape1.hasOwnProperty("name")
fuente
Prueba esto:
Cuando se trabaja con la reflexión en JavaScript, los objetos miembro siempre se denominan como una cadena. Por ejemplo:
for(i in obj) { ... }
El iterador de bucle contendrá un valor de cadena con el nombre de la propiedad. Para usar eso en el código, debe abordar la propiedad usando el operador de matriz de esta manera:
fuente
hasOwnProperty () es una buena propiedad para validar claves de objetos. Ejemplo:
var obj = {a:1, b:2}; obj.hasOwnProperty('a') // true
fuente