0

所以基本上我做了一个虚拟主对象,然后通过原型属性向它的所有子对象添加一个属性。但当然它是一个空属性。在使用运算符进行条件检查in以查看对象是否具有新属性时,结果为假并输出“Nothing there”。这是因为该属性还没有价值吗?

function Master(age, sex, location)
{
    this.age = age;
    this.sex = sex;
    this.location = location;
}

var me = new Master(99, "Male", "Texas, USA");

Master.prototype.username;


if("username" in me)
{
    document.write("The prototype put the property there.");
}
else
{
    document.write("Nothing there.<br />");
}
4

1 回答 1

2

这是因为还没有财产。仅仅试图读取该属性并不会使其存在。Master.prototype.username;与说相同window.foo- 它只是评估为undefined,但没有其他任何事情发生。如果要为其设置值,请尝试:

Master.prototype.username = undefined;

或更好

Master.prototype.username = null;

null和之间的区别在于undefined更容易检查属性是否为null; 如果你将值undefined作为参数传递给某些函数,它们会认为你根本没有传递任何值。

于 2013-08-20T01:30:09.773 回答