【发布时间】:2014-06-17 07:19:10
【问题描述】:
我试图弄清楚使用原型属性的价值是什么。我一直在看的一个教程将原型属性定义如下:“原型属性允许您向对象添加属性和方法。”所以我想象,给定这个定义,如果我不使用它,我将不被允许向对象添加属性和方法..该网站以此为例:
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;
完全没有意义。现在我很想知道......如果原型属性似乎没有做任何事情,我为什么要使用它?
【问题讨论】:
-
本教程似乎措辞不佳(或根本错误)。原型提供对象将使用的属性值,如果它没有自己的值覆盖这些值。这就是 Javascript 的继承方式。
-
谢谢。我会尝试从另一个教程中了解原型属性。
-
如果您将值直接分配给实例成员的阴影,则此处解释了这一点以及更多内容:stackoverflow.com/questions/16063394/…
标签: javascript