javascript里对于函数加与不加prototype有什么区别

functionabc(){}abc.say=function{}----------------------------functionabc(){}abc.proto... function abc(){}
abc.say=function{}
----------------------------
function abc(){}
abc.prototype.say=function{}
上面这两个有什么区别
展开
 我来答
帐号已注销
2020-01-19
知道答主
回答量:4
采纳率:0%
帮助的人:3763
展开全部
楼上说的不全对,
使用 prototype定义的方法相当于类的实例方法,必须new后才能使用;
不使用prototype定义的方法相当于类的静态方法,可以直接使用,不需要new,直接function名.xxx就能调用;
加prototype还可以this.xxx调用function中方法,不加prototype则没有调用的能力
<html><body><script type="text/javascript">
function ListCommon2(first,second,third)
{
this.a = first;
this.b=second;
this.c=third;
this.First=function ()
{
alert("this first "+first);
}
}
//不加prototype的情况
ListCommon2.do1=function(first)
{
//this.First();
alert("first do1"+first);
}
//添加prototype的情况
ListCommon2.prototype.do2=function(first)
{
this.First();
alert("first do2"+first);
}
//var bill=new ListCommon2("Bill Gates","Engineer",1985);
//ListCommon2.do1("1111");
ListCommon2.do2("2342");
//alert(bill.a);
</script></body></html>
白狐仙人
推荐于2016-01-29 · TA获得超过1236个赞
知道小有建树答主
回答量:830
采纳率:0%
帮助的人:695万
展开全部
prototype对象是实现面向对象的一个重要机制。
每个函数就是一个对象(Function),函数对象都有一个子对象 prototype对象,类是以函数的形式来定义的。prototype表示该函数的原型,也表示一个类的成员的集合。
在通过new创建一个类的实例对象的时候,prototype对象的成员都成为实例化对象的成员。
1、该对象被类所引用,只有函数对象才可引用;
2、在new实例化后,其成员被实例化,实例对象方可调用。
同时,函数是一个对象,函数对象若直接声明成员,不用被实例化即可调用。

其实总结下意思就是加了prototype的对象是不会被实例化的,是一个静态的方法
不加prototype每次new类的时候都会被实例化.占内存了.关键就是占内存了...
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式