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 相关文章推荐
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
Aug 22 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
Oct 29 Javascript
jQuery Validate 验证,校验规则写在控件中的具体实例
Feb 27 Javascript
js操作输入框提示信息且响应鼠标事件
Mar 25 Javascript
JavaScript事件代理和委托详解
Apr 08 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
Jun 20 Javascript
分享javascript、jquery实用代码段
Oct 20 Javascript
vue使用axios跨域请求数据问题详解
Oct 18 Javascript
vue 监听屏幕高度的实例
Sep 05 Javascript
JavaScript基础教程之如何实现一个简单的promise
Sep 11 Javascript
layui-table对返回的数据进行转变显示的实例
Sep 04 Javascript
vue-router路由懒加载及实现的3种方式
Feb 28 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
php定时执行任务设置详解
2015/02/06 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
php swoft框架实例用法
2020/12/22 PHP
jQuery live
2009/05/15 Javascript
jquery ready()的几种实现方法小结
2010/06/18 Javascript
IE6下js通过css隐藏select的一个bug
2010/08/16 Javascript
js使用递归解析xml
2014/12/12 Javascript
JavaScript中扩展Array contains方法实例
2020/08/23 Javascript
javascript数据结构与算法之检索算法
2015/04/04 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
2017/02/03 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
2017/02/14 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
微信小程序使用request网络请求操作实例
2017/12/15 Javascript
Vue组件和Route的生命周期实例详解
2018/02/10 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
element 动态合并表格的步骤
2020/12/31 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
Python列表生成式与生成器操作示例
2018/08/01 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
Html5页面中的返回实现的方法
2018/02/26 HTML / CSS
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
热能动力工程毕业生自荐信
2013/11/07 职场文书
入党自荐书范文
2014/03/09 职场文书
活动总结模板
2014/05/09 职场文书
2014年驻村干部工作总结
2014/11/17 职场文书
小学生家长意见
2015/06/03 职场文书
初婚未育证明样本
2015/06/18 职场文书
导游词之秦始皇兵马俑博物馆
2019/09/29 职场文书
MySQL创建高性能索引的全步骤
2021/05/02 MySQL
zabbix监控mysql的实例方法
2021/06/02 MySQL
Oracle中update和select 关联操作
2022/01/18 Oracle
Vue2.0搭建脚手架
2022/03/13 Vue.js