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 计算当天是本年本月的第几周
Mar 22 Javascript
jquery和javascript中如何将一元素的内容赋给另一元素
Jan 09 Javascript
js二维数组定义和初始化的三种方法总结
Mar 03 Javascript
浅析Node在构建超媒体API中的作用
Jul 30 Javascript
apply和call方法定义及apply和call方法的区别
Nov 15 Javascript
详解vue-cli本地环境API代理设置和解决跨域
Sep 05 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
Jan 15 Javascript
全面分析JavaScript 继承
May 30 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
Jul 18 Javascript
Layui Form 自定义验证的实例代码
Sep 14 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
Mar 09 Javascript
JavaScript Html实现移动端红包雨功能页面
Jan 10 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 MYSQL中插入当前时间
2008/04/06 PHP
php关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
PHP spl_autoload_register实现自动加载研究
2011/12/06 PHP
用 Composer构建自己的 PHP 框架之构建路由
2014/10/30 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
jquery UI 1.72 之datepicker
2009/12/29 Javascript
高效的获取当前元素是父元素的第几个子元素
2013/10/15 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
原生JS实现在线问卷调查投票特效
2017/01/03 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
基于vue组件实现猜数字游戏
2020/05/28 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
vue+iview+less 实现换肤功能
2018/08/17 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
使用typescript快速开发一个cli的实现示例
2020/12/09 Javascript
python结合selenium获取XX省交通违章数据的实现思路及代码
2016/06/26 Python
django限制匿名用户访问及重定向的方法实例
2018/02/07 Python
详解Django admin高级用法
2019/11/06 Python
django框架auth模块用法实例详解
2019/12/10 Python
opencv 图像腐蚀和图像膨胀的实现
2020/07/07 Python
Django静态文件加载失败解决方案
2020/08/26 Python
详解使用CSS3的@media来编写响应式的页面
2017/11/01 HTML / CSS
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
环保建议书400字
2014/05/14 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
2015政治思想表现评语
2015/03/25 职场文书
员工聘用合同范本
2015/09/21 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL