JavaScript四种调用模式和this示例介绍


Posted in Javascript onJanuary 02, 2014

JavaScript调用时除了声明时定义的形参外,每个函数接受两个附加参数:this 和arguments,this在面向对象编程中非常重要,它取决于调用模式。

JavaScript有四种调用模式,方法调用模式,函数调用模式,构造器调用模式和apply调用模式。这些模式在初始化关键参数this上存在差异。

方法调用模式:当一个函数被保存为对象的一个属性时,我们称它为一个方法,当一个方法被调用时,this被绑定到该对象上。如果调用表达式包含一个属性取表达式(即一个.点表达式或[script]下标表达式),那么它被当做一个方法调用。

var myObject = { 
value: 0; 
increment: function(inc){ 
this.value += typeof inc === 'number' ? inc : 1; 
} 
}; myObject.increment(); 
document.writeln(myObject.value);//1 
myObject.increment(2); 
document.writeln(myObject.value);//2

方法可以使用this去访问对象,所以它能从对象中取值或修改对象。this的绑定发生在调用的时候。这个超级迟绑定使得函数可以对this高度复用。通过this可以取得他们所属的上下文方法称为公共方法。

函数调用模式:当一个函数并非一个对象的属性时,那么它被当做一个函数来调用 var sum = add(3, 4);//sum值为7
当函数以此模式调用时,this被绑定到全局对象。

构造器调用模式:JavaScript是一门基于原型继承的语言。这意味着可以直接从其他对象继承属性。该语言是无类别的。
如果在函数前面带上new来调用,那么将创建一个隐藏连接到该函数的prototype成员的新对象,同时this将会被绑定到那个新对象上。

Apply调用模式:因为JavaScript是一门函数式的面向对象编程语言,所以函数可以拥有方法。
apply方法让哦我们构建一个参数数组并用其去调用函数。它也允许我们选择this的值。
apply方法接受两个参数,第一个将被绑定给this的值,第二个就是一个参数数组。

Javascript 相关文章推荐
jQuery 表格插件整理
Apr 27 Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
Aug 23 Javascript
JQuery中使文本框获得焦点的方法实例分析
Feb 28 Javascript
js实现改进的仿蓝色论坛导航菜单效果代码
Sep 06 Javascript
jQuery+css实现的切换图片功能代码
Jan 27 Javascript
分享js粘帖屏幕截图到web页面插件screenshot-paste
Aug 21 Javascript
漂亮! js实现颜色渐变效果
Aug 12 Javascript
vue element动态渲染、移除表单并添加验证的实现
Jan 16 Javascript
vue如何限制只能输入正负数及小数
Jul 04 Javascript
layui操作列按钮个数和文字颜色的判断实例
Sep 11 Javascript
javascript实现前端成语点击验证
Jun 24 Javascript
H5 js点击按钮复制文本到粘贴板
Nov 19 Javascript
ParseInt函数参数设置介绍
Jan 02 #Javascript
JS中Date日期函数中的参数使用介绍
Jan 02 #Javascript
JavaScript中Math对象方法使用概述
Jan 02 #Javascript
javascript数组快速打乱重排的方法
Jan 02 #Javascript
利用进制转换压缩数字函数分享
Jan 02 #Javascript
利用window.name实现windowStorage代码分享
Jan 02 #Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
Jan 02 #Javascript
You might like
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
js 操作css实现代码
2009/06/11 Javascript
JQuery调webservice实现邮箱验证(检测是否可用)
2013/05/21 Javascript
给文字加上着重号的JS代码
2013/11/12 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
js实现网页图片延时加载 提升网页打开速度
2016/01/26 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
在vue中给列表中的奇数行添加class的实现方法
2018/09/05 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
bootstrap中的导航条实例代码详解
2019/05/20 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
解决layui表格内文本超出隐藏的问题
2019/09/12 Javascript
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
Python动态加载模块的3种方法
2014/11/22 Python
Python探索之实现一个简单的HTTP服务器
2017/10/28 Python
django 发送邮件和缓存的实现代码
2018/07/18 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
2018/08/31 Python
关于python3中setup.py小概念解析
2019/08/22 Python
python打印异常信息的两种实现方式
2019/12/24 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
Python如何使用input函数获取输入
2020/08/06 Python
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
2014年乡镇植树节活动方案
2014/02/28 职场文书
2014年文学毕业生自我鉴定
2014/04/23 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
2014年教师节演讲稿
2014/09/03 职场文书
企业团队精神心得体会
2016/01/19 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书