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 相关文章推荐
jqeury eval将字符串转换json的方法
Jan 20 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
Mar 25 Javascript
关于json字符串与实体之间的严格验证代码
Nov 10 Javascript
JS实现双击内容变为可编辑状态
Mar 03 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
Mar 30 Javascript
Js实现京东无延迟菜单效果实例(demo)
Jun 02 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
Sep 25 Javascript
详解微信小程序的不同函数调用的几种方法
May 08 Javascript
tweenjs缓动算法的使用实例分析
Aug 26 Javascript
js刷新页面location.reload()用法详解
Dec 09 Javascript
JQuery中的常用事件、对象属性与使用方法分析
Dec 23 jQuery
Vue封装全局过滤器Filters的步骤
Sep 16 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+JQuery+Ajax实现分页方法详解
2016/08/06 PHP
PHP会员找回密码功能的简单实现
2016/09/05 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
2016/11/20 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
2011/05/24 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
Angular.js组件之input mask对input输入进行格式化详解
2017/07/10 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
python对list中的每个元素进行某种操作的方法
2018/06/29 Python
Python爬虫之网页图片抓取的方法
2018/07/16 Python
python 判断矩阵中每行非零个数的方法
2019/01/26 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
Flask中sqlalchemy模块的实例用法
2020/08/02 Python
HTML5是否真的可以取代Flash
2010/02/10 HTML / CSS
美国男装连锁零售商:Men’s Wearhouse
2016/10/14 全球购物
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
什么是规则表达式
2012/05/03 面试题
《三峡》教学反思
2014/03/01 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
Python使用Kubernetes API访问集群
2021/05/30 Python
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js