文章目录
  1. 1. 函数:原型
    1. 1.1. prototype的定义
    2. 1.2. 给prototype添加属性

函数:原型

每一个构造函数都有一个属性叫做原型(prototype,下面都不再翻译,使用其原文)。这个属性非常有用:为一个特定类声明通用的变量或者函数。

prototype的定义

你不需要显式地声明一个prototype属性,因为在每一个构造函数中都有它的存在。你可以看看下面的例子:

Example PT1

Language:javascript, parsed in: 0.003 seconds, using GeSHi 1.0.7.12
  1. function Test()
  2. {
  3. }
  4. alert(Test.prototype); // 输出 "Object"

运行示例;)

给prototype添加属性

就如你在上面所看到的,prototype是一个对象,因此,你能够给它添加属性。你添加给prototype的属性将会成为使用这个构造函数创建的对象的通用属性。

例如,我下面有一个数据类型Fish,我想让所有的鱼都有这些属性:<span title="代码"><font>livesIn=&quot;water&quot;</font></span><span title="代码"><font>price=20</font></span>;为了实现这个,我可以给构造函数Fishprototype添加那些属性。

Example PT2

Language:javascript, parsed in: 0.007 seconds, using GeSHi 1.0.7.12
  1. function Fish(name, color)
  2. {
  3. this.name=name;
  4. this.color=color;
  5. }
  6. Fish.prototype.livesIn="water";
  7. Fish.prototype.price=20;

接下来让我们作几条鱼:

Language:javascript, parsed in: 0.007 seconds, using GeSHi 1.0.7.12
  1. var fish1=new Fish("mackarel", "gray");
  2. var fish2=new Fish("goldfish", "orange");
  3. var fish3=new Fish("salmon", "white");

再来看看鱼都有哪些属性:

Language:javascript, parsed in: 0.008 seconds, using GeSHi 1.0.7.12
  1. for (var i=1; i<=3; i++)
  2. {
  3. var fish=eval("fish"+i); // 我只是取得指向这条鱼的指针
  4. alert(fish.name+","+fish.color+","+fish.livesIn+","+fish.price);
  5. }

运行示例;)

输出应该是:

Language:text, parsed in: 0.001 seconds, using GeSHi 1.0.7.12
  1. "mackarel, gray, water, 20"
  2. "goldfish, orange, water, 20"
  3. "salmon, white water, 20"

<

p>你看到所有的鱼都有属性livesInprice,我们甚至都没有为每一条不同的鱼特别声明这些属性。这时因为当一个对象被创建时,这个构造函数

文章目录
  1. 1. 函数:原型
    1. 1.1. prototype的定义
    2. 1.2. 给prototype添加属性