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倒计时代码
Aug 12 Javascript
Javascript中匿名函数的多种调用方式总结
Dec 06 Javascript
js判断文件格式及大小的简单实例(必看)
Oct 11 Javascript
jQuery插件zTree实现获取一级节点数据的方法
Mar 08 Javascript
AngularJS使用拦截器实现的loading功能完整实例
May 17 Javascript
浅谈mint-ui loadmore组件注意的问题
Nov 08 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
Feb 08 Javascript
js+css实现打字效果
Jun 24 Javascript
layui获取多选框中的值方法
Aug 15 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
Oct 25 Javascript
JS+php后台实现文件上传功能详解
Mar 02 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
Mar 06 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 $_SERVER详解
2009/01/16 PHP
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
javascript基本语法分析说明
2008/06/15 Javascript
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
jquery动画2.元素坐标动画效果(创建一个图片走廊)
2012/08/24 Javascript
ExtJS4 表格的嵌套 rowExpander应用
2014/05/02 Javascript
javascript动态创建及删除元素的方法
2014/12/22 Javascript
NodeJS制作爬虫全过程
2014/12/22 NodeJs
jQuery后代选择器用法实例
2014/12/23 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
详解小程序原生使用ES7 async/await语法
2018/08/06 Javascript
微信小程序云开发之模拟后台增删改查
2019/05/16 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
python追加元素到列表的方法
2015/07/28 Python
pycharm中连接mysql数据库的步骤详解
2017/05/02 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
2020/02/27 Python
Python读取二进制文件代码方法解析
2020/06/22 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
Python爬取微信小程序通用方法代码实例详解
2020/09/29 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
爷爷追悼会答谢词
2014/01/24 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
企业文化标语口号
2014/06/09 职场文书
工商局领导班子存在的问题整改措施思想汇报
2014/10/05 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
工作态度恶劣检讨书
2015/05/06 职场文书
python数字类型和占位符详情
2022/03/13 Python