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 相关文章推荐
客户端js性能优化小技巧整理
Nov 05 Javascript
node.js中的url.resolve方法使用说明
Dec 10 Javascript
详解javascript中的事件处理
Nov 06 Javascript
javascript实现保留两位小数的多种方法
Dec 18 Javascript
javascript事件绑定学习要点
Mar 09 Javascript
jQuery图片渐变特效的简单实现
Jun 25 Javascript
纯js实现页面返回顶部的动画(超简单)
Aug 10 Javascript
Node.js dgram模块实现UDP通信示例代码
Sep 26 Javascript
如何给element添加一个抽屉组件的方法步骤
Jul 14 Javascript
layui 对table中的数据进行转义的实例
Sep 12 Javascript
vue中实现回车键登录功能
Feb 19 Javascript
微信小程序语音同步智能识别的实现案例代码解析
May 29 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
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
PHP array_multisort() 函数的深入解析
2013/06/20 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
js 对象是否存在判断
2009/07/15 Javascript
Javascript 解疑
2009/11/11 Javascript
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
JavaScript中的Primitive对象封装介绍
2014/12/31 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
layer弹出层中H5播放器全屏出错的解决方法
2017/02/21 Javascript
JS实现简易换图时钟功能分析
2018/01/04 Javascript
React路由管理之React Router总结
2018/05/10 Javascript
js实现点击展开隐藏效果(实例代码)
2018/09/28 Javascript
详解async/await 异步应用的常用场景
2019/05/13 Javascript
Js实现复选框的全选、全不选反选功能代码实例
2020/02/28 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
Python tkinter模块中类继承的三种方式分析
2017/08/08 Python
解决安装pycharm后不能执行python脚本的问题
2019/01/19 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
Python实现word2Vec model过程解析
2019/12/16 Python
Python实现FLV视频拼接功能
2020/01/21 Python
opencv+python实现均值滤波
2020/02/19 Python
python传到前端的数据,双引号被转义的问题
2020/04/03 Python
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
在家更换处方镜片:Lensabl
2019/05/01 全球购物
zooplus德国:便宜地订购动物用品、动物饲料、动物食品
2020/05/06 全球购物
ktv中秋节活动方案
2014/01/30 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
2014年班组长工作总结
2014/11/20 职场文书
感谢信
2019/04/11 职场文书
大学生创业计划书常用模板
2019/08/07 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python
win10重装系统后上不了网怎么办 win10重装系统网络故障的解决办法
2022/07/23 数码科技