JavaScript 原型 prototype 的使用
函数:原型
每一个构造函数都有一个属性叫做原型(prototype,下面都不再翻译,使用其原文)。这个属性非常有用:为一个特定类声明通用的变量或者函数。
prototype的定义
你不需要显式地声明一个prototype属性,因为在每一个构造函数中都有它的存在。你可以看看下面的例子:
Example PT1
Language:javascript, parsed in: 0.003 seconds, using GeSHi 1.0.7.12
- function Test()
- {
- }
- alert(Test.prototype); // 输出 "Object"
运行示例;)
给prototype添加属性
就如你在上面所看到的,prototype是一个对象,因此,你能够给它添加属性。你添加给prototype的属性将会成为使用这个构造函数创建的对象的通用属性。
例如,我下面有一个数据类型Fish,我想让所有的鱼都有这些属性:<span title="代码"><font>livesIn="water"</font></span>
和<span title="代码"><font>price=20</font></span>
;为了实现这个,我可以给构造函数Fish的prototype添加那些属性。
Example PT2
Language:javascript, parsed in: 0.007 seconds, using GeSHi 1.0.7.12
- function Fish(name, color)
- {
- this.name=name;
- this.color=color;
- }
- Fish.prototype.livesIn="water";
- Fish.prototype.price=20;
接下来让我们作几条鱼:
Language:javascript, parsed in: 0.007 seconds, using GeSHi 1.0.7.12
- var fish1=new Fish("mackarel", "gray");
- var fish2=new Fish("goldfish", "orange");
- var fish3=new Fish("salmon", "white");
再来看看鱼都有哪些属性:
Language:javascript, parsed in: 0.008 seconds, using GeSHi 1.0.7.12
- for (var i=1; i<=3; i++)
- {
- var fish=eval("fish"+i); // 我只是取得指向这条鱼的指针
- alert(fish.name+","+fish.color+","+fish.livesIn+","+fish.price);
- }
运行示例;)
输出应该是:
Language:text, parsed in: 0.001 seconds, using GeSHi 1.0.7.12
- "mackarel, gray, water, 20"
- "goldfish, orange, water, 20"
- "salmon, white water, 20"
<
p>你看到所有的鱼都有属性livesIn和price,我们甚至都没有为每一条不同的鱼特别声明这些属性。这时因为当一个对象被创建时,这个构造函数