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 相关文章推荐
jQuery Ajax使用 全解析
Dec 15 Javascript
jquery cookie的用法总结
Nov 18 Javascript
JavaScript获取当前页面上的指定对象示例代码
Feb 28 Javascript
使用jquery中height()方法获取各种高度大全
Apr 02 Javascript
通过url查找a元素并点击
Apr 09 Javascript
JavaScript打印网页指定区域的例子
May 03 Javascript
可编辑下拉框的2种实现方式
Jun 13 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
Mar 04 Javascript
js实现精美的图片跟随鼠标效果实例
May 16 Javascript
微信小程序 教程之列表渲染
Oct 18 Javascript
详解自动生成博客目录案例
Dec 09 Javascript
如何从零开始手写Koa2框架
Mar 22 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中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
jquery插件之easing使用
2010/08/19 Javascript
jQuery中调用WebService方法小结
2011/03/28 Javascript
jquery indexOf使用方法
2013/08/19 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
js匿名函数的调用示例(形式多种多样)
2014/08/20 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
jQuery拖拽插件gridster使用指南
2015/04/21 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
2016/08/23 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
基于JavaScript实现自动更新倒计时效果
2016/12/19 Javascript
js监听input输入框值的实时变化实例
2017/01/26 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
微信小程序如何获取用户收货地址
2018/11/27 Javascript
Vue中通过Vue.extend动态创建实例的方法
2019/08/13 Javascript
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
2018/11/29 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
Django基础三之视图函数的使用方法
2019/07/18 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
python 实现的车牌识别项目
2021/01/25 Python
支票、地址标签、包装纸和慰问卡:Current Catalog
2018/01/30 全球购物
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
中专毕业生自我鉴定范文
2013/11/09 职场文书
学生就业推荐信
2013/11/13 职场文书
DIY蛋糕店的创业计划书范文
2013/12/26 职场文书
关爱残疾人演讲稿
2014/05/24 职场文书
教研处工作方案
2014/05/26 职场文书
环保公益策划方案
2014/08/15 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
vue项目打包后路由错误的解决方法
2022/04/13 Vue.js