最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

js类定义函数时用prototype与不用的区别

来源:动视网 责编:小采 时间:2020-11-27 21:24:22
文档

js类定义函数时用prototype与不用的区别

js类定义函数时用prototype与不用的区别:一直在使用js编写自以为是面向对象的方法,遇到一个问题,就是定义一个方法,如下: 代码如下:function ListCommon2(first,second,third) { this.First=function () { alert("first do"+first); } } ListCo
推荐度:
导读js类定义函数时用prototype与不用的区别:一直在使用js编写自以为是面向对象的方法,遇到一个问题,就是定义一个方法,如下: 代码如下:function ListCommon2(first,second,third) { this.First=function () { alert("first do"+first); } } ListCo


一直在使用js编写自以为是面向对象的方法,遇到一个问题,就是定义一个方法,如下:

代码如下:

function ListCommon2(first,second,third) 
{ 
this.First=function () 
{ 
alert("first do"+first); 
} 
} 
ListCommon2.do1=function(first) 
{ 
// this.First(); 
alert("first do"+first); 
} 
ListCommon2.prototype.do2=function(first) 
{ 
// this.First(); 
alert("first do"+first); 
}

两种方法到底有什么区别呢?用不用prototype有什么作用呢?

测试代码:

var t1=
new
 ListCommon2("烧水1","泡茶1","喝1"); 
// t1.do1();//调用出错 
ListCommon2.do1("烧水1"); 
var t2=new ListCommon2("烧水2","泡茶2","喝2"); 
t2.do2("烧水2");// 
// ListCommon2.do2("烧水1");//调用出错


经过测试发现,没有使用prototype的方法相当于类的静态方法,因此可以这样调用,ListCommon2.do1("烧水1");,如果这样调用就会出错,t1.do1();

相反,使用prototype的方法相当于类的实例方法,不许new后才能使用,ListCommon2.do2("烧水1");这样就会出错

结论,使用 prototype定义的方法相当于类的实例方法,必须new后才能使用,函数中可以调用函数的也会类的实例方法的有些类似

使用 不使用prototype定义的方法相当于类的静态方法,可以直接使用,不需要new,,函数中可以调用函数的也会类的静态方法法的有些类似

例如不能调用this.First();

文档

js类定义函数时用prototype与不用的区别

js类定义函数时用prototype与不用的区别:一直在使用js编写自以为是面向对象的方法,遇到一个问题,就是定义一个方法,如下: 代码如下:function ListCommon2(first,second,third) { this.First=function () { alert("first do"+first); } } ListCo
推荐度:
标签: 不需要 js 函数中
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top