我正在试图弄清楚使用prototype属性的价值。我一直在研究的一个教程定义了prototype属性,如下所示:“prototype属性允许你向对象添加属性和方法。”所以我想,根据这个定义,如果我不使用它,我将不被允许向对象添加属性和方法。该网站以此为例:
function employee(name,jobtitle,born)
{
this.name=name;
this.jobtitle=jobtitle;
this.born=born;
}
var fred=new employee("Fred Flintstone","Caveman",1970);
employee.prototype.salary=null;
fred.salary=20000;
document.write(fred.salary);
所以我在浏览器中运行了这个,是的,fred.salary确实等于20000.我决定试验看看如果删除这一行会发生什么:
employee.prototype.salary=null;
我以为我会收到一些错误。我想这可能是必要的,因为定义这“允许”我“添加”对象的属性和方法。我试过这个:
function employee(name,jobtitle,born)
{
this.name=name;
this.jobtitle=jobtitle;
this.born=born;
}
var fred=new employee("Fred Flintstone","Caveman",1970);
fred.salary=20000;
document.write(fred.salary);
但是,令我惊讶的是没有错误。代码工作完全相同就像我根本没有做任何改变一样。就像这一行:
employee.prototype.salary=null;
完全没有意义。现在我不停地想着......为什么我会使用原型属性,如果它似乎没有做任何事情?
答案 0 :(得分:0)
我认为你对这条线感到困惑:
employee.prototype.salary=null;
..因为你认为你正在定义一个名为salary的变量。是的,您正在定义一个名为salary的变量,但行:
fred.salary=20000;
..还定义了一个名为salary的变量。
但是,如果您创建了一些其他人物对象:
var fred=new employee("Fred Flintstone","Caveman",1970);
var jane=new employee(...);
var bob=new employee(...);
然后确实改变了原型的工资..
employee.prototype.salary=30000;
fred.salary=20000;
然后fred.salary将是20000,但bob和jane将是30000