function Car()
{}
Car.prototype.color="red";
Car.prototype.doors=4;
Car.prototype.mpg=23;
Car.prototype.showColor=function()
{
    alert(this.color);
};
var oCar1=new Car();
var oCar2=new Car();
我看的是《JavaScript高级程序设计》这本书
http://book.csdn.net/bookfiles/110/1001103141.shtml我的问题是:
这里为什么要用prototype?
为什么不能直接写成这样:
function Car()
{}
Car.color="red";
Car.doors=4;
Car.mpg=23;
Car.showColor=function()
{
    alert(this.color);
};
var oCar1=new Car();
var oCar2=new Car();还有就是为什么prototype要写在函数体外面?
写在里面有什么问题?
function Car()
{
Car.prototype.color="red";
Car.prototype.doors=4;
Car.prototype.mpg=23;
Car.prototype.showColor=function()
{
    alert(this.color);
};
}

解决方案 »

  1.   

    把 prototype 当函数用就行了. 
    写 js 一般是写函数, 但某些功能直接写 prototype 复用性高.
      

  2.   

    它是用Javascript写好的一些API,包括对Javascript中的类如String,Array等进行的扩充,把JS文件嵌入后直接用就行了,如果程序看不明白的话,建议你参考一下JSON,上网上查一下,有很多这样的文章,prototype就用了JSON的语法。
      

  3.   

    tjpulwy() 说的prototype和楼主说的不是一回事,tjpulwy() 说的prototype是一个JS框架。prototype是用于对原型对象的继承,主要是为了节省内存空间。
      

  4.   

    类和实现的关系类似于:模具和成品的关系。而 prototype 就是对模具的细节雕刻,刻上什么,那从这个模具里浇铸出来的成品就会有什么。
    Car.doors=4; 这样的写法只是对 Car 这个对象扩展一些静态成员,不会被实例继承的
      

  5.   

    Car.doors=4; 这样的写法只是对 Car 这个对象扩展一些静态成员,不会被实例继承的
    谢谢meizz
    你这样说就清晰了很多了~~~不过还有问题
    为什么prototype要写在函数体外面?
      

  6.   

    prototype是用于对原型对象的继承,主要是为了节省内存空间。-----JavaScript权威指南有提到过