为什么人们使用原型属性?

时间:2014-06-17 07:19:10

标签: javascript

我正在试图弄清楚使用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;

完全没有意义。现在我不停地想着......为什么我会使用原型属性,如果它似乎没有做任何事情?

1 个答案:

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