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 相关文章推荐
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
Jun 26 Javascript
jQuery 扩展对input的一些操作方法
Oct 30 Javascript
JQuery Tips(4) 一些关于提高JQuery性能的Tips
Dec 19 Javascript
Angular Js文件上传之form-data
Aug 28 Javascript
JS实现图片垂直居中显示小结
Dec 13 Javascript
angularjs封装$http为factory的方法
May 18 Javascript
vue 里面使用axios 和封装的示例代码
Sep 01 Javascript
详解node Async/Await 更好的异步编程解决方案
May 10 Javascript
原生JS实现的跳一跳小游戏完整实例
Jan 27 Javascript
微信小程序webSocket的使用方法
Feb 20 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
Mar 06 Javascript
js实现类选择器和name属性选择器的示例步骤
Feb 07 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
PHP4 与 MySQL 交互使用
2006/10/09 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
PHP加密解密字符串汇总
2015/04/26 PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
2015/05/13 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
JavaScript 无符号右移运算符
2009/04/17 Javascript
JavaScript字符串String和Array操作的有趣方法
2012/12/18 Javascript
php读取sqlite数据库入门实例代码
2014/06/25 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
js检查是否关闭浏览器的方法
2016/08/02 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
深入理解requireJS-实现一个简单的模块加载器
2018/01/15 Javascript
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
vue单页缓存方案分析及实现
2018/09/25 Javascript
JS实现点餐自动选择框(案例分析)
2019/12/10 Javascript
详解node.js 事件循环
2020/07/22 Javascript
Python中用于计算对数的log()方法
2015/05/15 Python
python类装饰器用法实例
2015/06/04 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
python三方库之requests的快速上手
2019/03/04 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
Python中使用threading.Event协调线程的运行详解
2020/05/02 Python
Python类及获取对象属性方法解析
2020/06/15 Python
python基于opencv 实现图像时钟
2021/01/04 Python
一款纯css3实现的tab选项卡的实列教程
2014/12/11 HTML / CSS
移动端html5判断是否滚动到底部并且下拉加载
2019/11/19 HTML / CSS
英国最大的女性服装零售商:Dorothy Perkins
2017/03/30 全球购物
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
财务会计专业个人求职信范本
2014/01/08 职场文书
证婚人经典证婚词
2014/01/09 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
毕业典礼邀请函
2015/01/31 职场文书
新娘婚礼致辞
2015/07/27 职场文书
导游词之杭州西湖
2019/09/19 职场文书
Sql Server之数据类型详解
2022/02/28 SQL Server