首页 > 代码库 > 8.原型

8.原型

在JavaScript中,函数是一种值。而原型(prototype)是函数的一个属性,这个属性的值是一个对象,下面看一个构造函数:

function Gadget(name,color){    this.name=name;    this.color=color;    this.whatAreYou=function(){        terutn ‘I am a  ‘+this.color+‘ ‘+this.name;     }}

prototype和name、color、whatAreYou都属于Gadeget的属性。下面来给上面的构造函数的原型属性赋值,两种方法结果一样:

Gadget.prototype.price = 100;Gadget.prototype.rating = 3;Gadget.prototype.getInfo = function(){   return ‘Rating: ‘+this.rating+‘,price: ‘+this.price;}//等价于Gadget.prototype={    price:100,    rating:3,    getInfo:function(){       return ‘Rating: ‘+this.rating+‘,price: ‘+this.price;    }}

当我们使用构造器Gadeget()来新建一个newtoy对象,并访问rating属性的时候。JavaScript先会查询newtoy对象的所有属性,但却找不到rating的属性。接下来,脚本引擎会去查询用于创建当前对象的构造器函数的原型,等价于我们直接访问newtoy.constructor.prototype。如果在原型中找到了该属性,就立即使用该属性。

var newtoy = new Gadeget(‘webcam‘,‘black‘);newtoy.name    //webcamnewtoy.rating    //3

因为构造函数的原型属性值本身是一个对象,那么意味着它也有一个构造器方法,而这个构造器方法又会有自己的原型,这样就形成了原型链。

 

8.原型