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 相关文章推荐
JS检测输入字符是否包含非法字符的示例代码
Feb 11 Javascript
js控制元素显示在屏幕固定位置及监听屏幕高度变化的方法
Aug 11 Javascript
js和jquery实现监听键盘事件示例代码
Jun 24 Javascript
jQuery EasyUI封装简化操作
Sep 18 Javascript
laydate.js日期时间选择插件
Jan 04 Javascript
jQuery实现鼠标跟随效果
Feb 20 Javascript
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
Sep 30 Javascript
小程序实现人脸识别功能(百度ai)
Dec 23 Javascript
vue中音频wavesurfer.js的使用方法
Feb 20 Vue.js
详解JavaScript 作用域
Jul 14 Javascript
Vue点击切换Class变化,实现Active当前样式操作
Jul 17 Javascript
如何在JS文件中获取Vue组件
Sep 16 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
PHP中实现图片的锐化
2006/10/09 PHP
PHP之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
Yii2框架数据验证操作实例详解
2018/05/02 PHP
php+js实现裁剪任意形状图片
2018/10/31 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
Valerio 发布了 Mootools
2006/09/23 Javascript
js select常用操作控制代码
2010/03/16 Javascript
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
js Element Traversal规范中的元素遍历方法
2018/04/19 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
2019/06/15 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
Vue.js组件使用props传递数据的方法
2019/10/19 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
js实现验证码干扰(动态)
2021/02/23 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
2018/05/25 Python
python中pika模块问题的深入探究
2018/10/13 Python
Python3数字求和的实例
2019/02/19 Python
Python中断多重循环的思路总结
2019/10/04 Python
Python爬取YY评级分数并保存数据实现过程解析
2020/06/01 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
MyBag中文网:英国著名的时尚包袋电商零售网站
2020/07/31 全球购物
高中生学习的自我评价
2013/12/14 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书
关于童年的读书笔记
2015/06/26 职场文书
python 批量压缩图片的脚本
2021/06/02 Python
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技