js类定义函数时用prototype与不用的区别示例介绍


Posted in Javascript onJune 10, 2014

一直在使用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();

Javascript 相关文章推荐
JavaScript函数、方法、对象代码
Oct 29 Javascript
jquery validation插件表单验证的一个例子
Mar 03 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
Apr 14 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
Dec 10 Javascript
js综合应用实例简单的表格统计
Sep 03 Javascript
JavaScript的事件绑定(方便不支持js的时候)
Oct 01 Javascript
用js动态添加html元素,以及属性的简单实例
Jul 19 Javascript
JS数字千分位格式化实现方法总结
Dec 16 Javascript
jquery中用函数来设置css样式
Dec 22 Javascript
php 修改密码实现代码
May 24 Javascript
用node和express连接mysql实现登录注册的实现代码
Jul 05 Javascript
详解vue 数据传递的方法
Apr 19 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
Jun 10 #Javascript
js换图片效果可进行定时操作
Jun 09 #Javascript
jQuery如何将选中的对象转化为原始的DOM对象
Jun 09 #Javascript
javascript 处理null及null值示例
Jun 09 #Javascript
网页实时显示服务器时间和javscript自运行时钟
Jun 09 #Javascript
jQuery setTimeout传递字符串参数报错的解决方法
Jun 09 #Javascript
js去除输入框中所有的空格和禁止输入空格的方法
Jun 09 #Javascript
You might like
杏林同学录(四)
2006/10/09 PHP
php中return的用法实例分析
2015/02/28 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
2019/10/12 PHP
Grid得到选择行数据的方法总结
2011/01/17 Javascript
选择器中含有空格在使用示例及注意事项
2013/07/31 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
AngularJS中过滤器的使用与自定义实例代码
2016/09/17 Javascript
JavaScript实现垂直向上无缝滚动特效代码
2016/11/23 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
深入了解js原型模式
2019/05/30 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
2019/07/12 jQuery
Python面向对象特殊成员
2017/04/24 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
python3.5绘制随机漫步图
2018/08/27 Python
解决PyCharm同目录下导入模块会报错的问题
2018/10/13 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
python实现桌面气泡提示功能
2019/07/29 Python
Python3常见函数range()用法详解
2019/12/30 Python
python isinstance函数用法详解
2020/02/13 Python
python super函数使用方法详解
2020/02/14 Python
查看已安装tensorflow版本的方法示例
2020/04/19 Python
python实现简单的学生管理系统
2021/02/22 Python
一款利用html5和css3实现的3D滚动特效的教程
2015/01/04 HTML / CSS
深入剖析HTML5 内联框架iFrame
2016/05/04 HTML / CSS
介绍一下代理模式(Proxy)
2014/10/17 面试题
好习惯伴我成长演讲稿
2014/05/21 职场文书
2015个人半年总结范文
2015/03/09 职场文书
专家推荐信范文
2015/03/26 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
MySQL 数据类型详情
2021/11/11 MySQL
Python中三种花式打印的示例详解
2022/03/19 Python