在javascript中的hasOwnProperty

时间:2010-04-08 13:17:49

标签: javascript

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。

正确的行为是什么?

4 个答案:

答案 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