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 相关文章推荐
Hutia 的 JS 代码集
Oct 24 Javascript
js直接编辑当前cookie的脚本
Sep 14 Javascript
java与javascript之间json格式数据互转介绍
Oct 29 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
Feb 26 Javascript
JQuery弹出层示例可自定义
May 19 Javascript
js识别不同浏览器基于userAgent做判断
Jul 29 Javascript
Bootstrap中表单控件状态(验证状态)
Aug 04 Javascript
ionic环境配置及问题详解
Jun 27 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
Oct 28 jQuery
vue使用recorder.js实现录音功能
Nov 22 Javascript
js将URL网址转为16进制加密与解密函数
Mar 04 Javascript
修改Vue打包后的默认文件名操作
Aug 12 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
wordpress之wp-settings.php
2007/08/17 PHP
php随机显示图片的简单示例
2014/02/15 PHP
php+mysql实现用户注册登陆的方法
2015/01/03 PHP
PHP编译configure时常见错误的总结
2017/08/17 PHP
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
2013/03/25 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
ES6的新特性概览
2016/03/10 Javascript
使用vue.js实现联动效果的示例代码
2017/01/10 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
javascript内存分配原理实例分析
2017/04/10 Javascript
详解关于webpack多入口热加载很慢的原因
2019/04/24 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
[07:54]DOTA2-DPC中国联赛 正赛 iG vs VG 选手采访
2021/03/11 DOTA
python用装饰器自动注册Tornado路由详解
2017/02/14 Python
Python虚拟环境项目实例
2017/11/20 Python
轻松实现TensorFlow微信跳一跳的AI
2018/01/05 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
如何在python中写hive脚本
2019/11/08 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
python selenium 获取接口数据的实现
2020/12/07 Python
基于css3实现漂亮便签样式
2013/03/18 HTML / CSS
使用HTML5 Canvas API中的clip()方法裁剪区域图像
2016/03/25 HTML / CSS
eVitamins日本:在线购买折扣维生素、补品和草药
2019/04/04 全球购物
宿舍保安职务说明书
2014/02/25 职场文书
幼儿教师师德演讲稿
2014/05/06 职场文书
员工年终自我评价
2014/09/14 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
单位接收函范文
2015/01/30 职场文书
开幕式邀请函
2015/01/31 职场文书
医院党建工作总结2015
2015/05/26 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书
PyTorch 如何自动计算梯度
2021/05/23 Python
sql字段解析器的实现示例
2021/06/23 SQL Server