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 捕获窗口关闭事件
Jul 26 Javascript
JavaScript清空数组元素的两种方法简单比较
Jul 10 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
Sep 22 Javascript
js实现canvas图片与img图片的相互转换的示例
Aug 31 Javascript
vuex的简单使用教程
Feb 02 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
Feb 11 Javascript
解决vuecli3.0热更新失效的问题
Sep 19 Javascript
JS实现电话号码的字母组合算法示例
Feb 26 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
Jul 13 Javascript
vue.js实现左边导航切换右边内容
Oct 21 Javascript
详解如何使用React Hooks请求数据并渲染
Oct 18 Javascript
详解Vue2的diff算法
Jan 06 Vue.js
深入探讨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
PHPAnalysis中文分词类详解
2014/06/13 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
PHP执行普通shell命令流程解析
2020/08/24 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
javascript操作cookie的文章(设置,删除cookies)
2010/04/01 Javascript
非常好用的JsonToString 方法 简单实例
2013/07/18 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
2016/04/01 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
js中arguments对象的深入理解
2019/05/14 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
2020/01/04 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
在antd中setFieldsValue和defaultVal的用法
2020/10/29 Javascript
[02:40]2014DOTA2 国际邀请赛中国区预选赛 四大豪门抵达华西村
2014/05/23 DOTA
python清除字符串里非数字字符的方法
2015/07/02 Python
Python if语句知识点用法总结
2018/06/10 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
2018/11/01 Python
Python交互环境下打印和输入函数的实例内容
2020/02/16 Python
python中什么是面向对象
2020/06/11 Python
python全栈开发语法总结
2020/11/22 Python
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
项目总经理岗位职责
2014/02/14 职场文书
浪漫婚礼主持词
2014/03/14 职场文书
读书活动总结
2014/04/28 职场文书
大学生村官考核材料
2014/05/23 职场文书
毕业生求职信
2014/06/10 职场文书
酒店辞职书范文
2015/02/26 职场文书
民事诉讼答辩状范文
2015/05/21 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
mysql联合索引的使用规则
2021/06/23 MySQL