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
号召了body.onload
事件。
我希望shape1.hasOwnProperty(name)
返回true,但返回false。
正确的行为是什么?
答案 0 :(得分:147)
hasOwnProperty
是一个普通的Javascript函数,它接受一个字符串参数。
当你致电shape1.hasOwnProperty(name)
时,你传递的是name
变量(不存在)的值,就像你写alert(name)
时那样。
您需要使用包含hasOwnProperty
的字符串来呼叫name
,如下所示:shape1.hasOwnProperty("name")
。
答案 1 :(得分:18)
hasOwnProperty
期望将属性名称作为字符串,因此它将是shape1.hasOwnProperty("name")
答案 2 :(得分:3)
试试这个:
function welcomeMessage() { var shape1 = new Shape(); //alert(shape1.draw()); alert(shape1.hasOwnProperty("name")); }
在JavaScript中使用反射时,成员对象始终被称为字符串的名称。例如:
for(i in obj) { ... }
循环迭代器我将保存一个带有属性名称的字符串值。要在代码中使用它,您必须使用数组运算符来处理属性,如下所示:
for(i in obj) { alert("The value of obj." + i + " = " + obj[i]); }
答案 3 :(得分:1)
hasOwnProperty()是用于验证对象键的好属性。 示例:
var obj = {a:1,b:2};
obj.hasOwnProperty('a') // true