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 相关文章推荐
javascript支持firefox,ie7页面布局拖拽效果代码
Dec 20 Javascript
Div Select挡住的解决办法
Aug 07 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
Mar 19 Javascript
jQuery中:enabled选择器用法实例
Jan 04 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
Sep 15 Javascript
每天一篇javascript学习小结(基础知识)
Nov 10 Javascript
php register_shutdown_function函数详解
Jul 23 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
Sep 02 Javascript
微信小程序左右滑动的实现代码
Dec 15 Javascript
常用的9个JavaScript图表库详解
Dec 19 Javascript
微信小程序传值以及获取值方法的详解
Apr 29 Javascript
layui表格分页 记录勾选的实例
Sep 02 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
整理的9个实用的PHP库简介和下载
2010/11/09 PHP
php设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
php 生成短网址原理及代码
2014/01/23 PHP
PHP二维数组矩形转置实例
2016/07/20 PHP
php递归函数怎么用才有效
2018/02/24 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
2019/06/14 PHP
JQuery浮动DIV提示信息并自动隐藏的代码
2010/08/29 Javascript
回车直接实现点击某按钮的效果即触发单击事件
2014/02/27 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
js实现通过开始结束控制的计时器
2019/02/25 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
在Python的Django框架中创建语言文件
2015/07/27 Python
python生成多个只含0,1元素的随机数组或列表的实例
2018/11/12 Python
Python实现直播推流效果
2019/11/26 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
keras在构建LSTM模型时对变长序列的处理操作
2020/06/29 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
python中append函数用法讲解
2020/12/11 Python
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
重新定义牛仔布,100美元以下:Warp + Weft
2018/07/25 全球购物
英国日常交易网站:Wowcher
2018/09/04 全球购物
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
学前教育毕业生自荐信范文
2013/12/24 职场文书
社团成立邀请函
2014/01/08 职场文书
社区党风廉政建设调研报告
2015/01/01 职场文书
反腐倡廉观后感
2015/06/08 职场文书