prototype到底是什么?为什么要用prototype?--新手问...

jam2023 2007-01-03 12:16:15
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);
};
}

...全文
7075 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
gameboy766 2007-01-05
  • 打赏
  • 举报
回复
mark
Toti 2007-01-05
  • 打赏
  • 举报
回复
prototype是用于对原型对象的继承,主要是为了节省内存空间。-----JavaScript权威指南有提到过
muxrwc 2007-01-04
  • 打赏
  • 举报
回复
原先有人问过,然后又有前辈答说内存分布方式不同。。。。
地址找不到了(很不好找的说,所以就不找了^o^)
abc12hjc 2007-01-04
  • 打赏
  • 举报
回复
写在里面会每当实例化一个对象的时候,就会增加一次内存开销
而采用原型链的方式则相反……
Eilien 2007-01-04
  • 打赏
  • 举报
回复
mark
jam2023 2007-01-04
  • 打赏
  • 举报
回复
Car.doors=4; 这样的写法只是对 Car 这个对象扩展一些静态成员,不会被实例继承的


谢谢meizz
你这样说就清晰了很多了~~~

不过还有问题
为什么prototype要写在函数体外面?
meizz 2007-01-04
  • 打赏
  • 举报
回复
类和实现的关系类似于:模具和成品的关系。而 prototype 就是对模具的细节雕刻,刻上什么,那从这个模具里浇铸出来的成品就会有什么。
Car.doors=4; 这样的写法只是对 Car 这个对象扩展一些静态成员,不会被实例继承的
btbtd 2007-01-03
  • 打赏
  • 举报
回复
把 prototype 当函数用就行了.
写 js 一般是写函数, 但某些功能直接写 prototype 复用性高.
engzs 2007-01-03
  • 打赏
  • 举报
回复
tjpulwy() 说的prototype和楼主说的不是一回事,tjpulwy() 说的prototype是一个JS框架。prototype是用于对原型对象的继承,主要是为了节省内存空间。
zuo85693137 2007-01-03
  • 打赏
  • 举报
回复
大概就像书上写的那样,可以有效节省空间;不然多建几个对象,有些不必要的方法和数据会被重复创建~我是这么理解的
tjpulwy 2007-01-03
  • 打赏
  • 举报
回复
它是用Javascript写好的一些API,包括对Javascript中的类如String,Array等进行的扩充,把JS文件嵌入后直接用就行了,如果程序看不明白的话,建议你参考一下JSON,上网上查一下,有很多这样的文章,prototype就用了JSON的语法。
jam2023 2007-01-03
  • 打赏
  • 举报
回复
我就是觉得很难理解它,你说把它当作函数,可是它并不像函数...
所以对于新手的我,真的“卡住”了在这里

所以大家能不能更深入的讲解一下?
谢谢了!!!

87,914

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧