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脚本函数库 方便开发
Oct 13 Javascript
javascript与jquery中跳出循环的区别总结
Nov 04 Javascript
Javascript打印局部页面实例
Jun 21 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
Sep 01 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
Jul 23 Javascript
Three.js开发实现3D地图的实践过程总结
Nov 20 Javascript
浅谈Node.js爬虫之网页请求模块
Jan 11 Javascript
Angular异步变同步处理方法
Aug 13 Javascript
Vuex中的State使用介绍
Jan 19 Javascript
前端面试知识点目录一览
Apr 15 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
Nov 12 Javascript
es5 类与es6中class的区别小结
Nov 09 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编写大型网站问题集
2007/03/06 PHP
PHP+ajax 无刷新删除数据
2010/02/20 PHP
探讨:php中在foreach中使用foreach ($arr as &$value) 这种类型的解释
2013/06/24 PHP
PHP原生函数一定好吗?
2014/12/08 PHP
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
2010/11/21 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
AngularJs 国际化(I18n/L10n)详解
2016/09/01 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
2017/09/18 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
2019/09/01 Javascript
如何用vue-cli3脚手架搭建一个基于ts的基础脚手架的方法
2019/12/12 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
2020/12/04 Vue.js
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
更改Python的pip install 默认安装依赖路径方法详解
2018/10/27 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
香港唯港荟酒店预订:Hotel ICON
2018/03/27 全球购物
资料员的岗位职责
2013/11/20 职场文书
最新的咖啡店创业计划书
2013/12/30 职场文书
八一建军节部队活动方案
2014/02/04 职场文书
建筑学专业自荐书
2014/07/09 职场文书
小学老师对学生的评语
2014/12/29 职场文书
员工辞退通知书
2015/04/17 职场文书
《用字母表示数》教学反思
2016/02/17 职场文书
Java数据结构之链表相关知识总结
2021/06/18 Java/Android
解析Redis Cluster原理
2021/06/21 Redis
mysql如何查询连续记录
2022/05/11 MySQL
Nginx 匹配方式
2022/05/15 Servers