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 相关文章推荐
JQUERY 对象与DOM对象之两者相互间的转换
Apr 27 Javascript
在JQuery dialog里的服务器控件 事件失效问题
Dec 08 Javascript
js 回车提交表单两种实现方法
Dec 31 Javascript
js控制href内容的连接内容的变化示例
Apr 30 Javascript
js限制checkbox选中个数以限制六个为例
Jul 15 Javascript
动态加载jQuery的两种方法实例分析
Jul 17 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
Feb 12 Javascript
利用canvas实现的加载动画效果实例代码
Jul 05 Javascript
Vue 组件间的样式冲突污染
Aug 31 Javascript
Node.js文件编码格式的转换的方法
Apr 27 Javascript
three.js着色器材质的内置变量示例详解
Aug 16 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
Sep 28 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
php实现下载限制速度示例分享
2014/02/13 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
2015/09/23 PHP
动态控制Table的js代码
2007/03/07 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
bootstrap布局中input输入框右侧图标点击功能
2016/05/16 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
微信小程序开发之路由切换页面重定向问题
2018/09/18 Javascript
微信小程序渲染性能调优小结
2019/07/30 Javascript
javascript实现超好看的3D烟花特效
2020/01/01 Javascript
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
vue实现选中效果
2020/10/07 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
详解vue 组件注册
2020/11/20 Vue.js
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
Selenium定位元素操作示例
2018/08/10 Python
python实现学员管理系统
2019/02/26 Python
简单介绍python封装的基本知识
2019/08/10 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
中国综合性网上购物商城:当当(网上卖书起家)
2016/11/16 全球购物
英国电子专家:maplin
2019/09/04 全球购物
开学典礼感言
2014/02/16 职场文书
2014大学生全国两会学习心得体会
2014/03/13 职场文书
李培根演讲稿
2014/05/22 职场文书
代收款委托书范本
2014/10/01 职场文书
2015年万圣节活动总结
2015/03/24 职场文书
2015年财务部工作总结
2015/04/10 职场文书
病危通知单
2015/04/17 职场文书
2015年度工程师评职称工作总结
2015/10/14 职场文书
优秀教师主要事迹材料
2015/11/04 职场文书
五年级数学教学反思
2016/02/16 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis
GTX1660显卡搭配显示器推荐
2022/04/19 数码科技