call与apply函数
call与apply函数
1、为什么需要call与apply函数
Javascript中,每一个函数内部都有一个特殊的关键词this,其随着所处环境的不同其指向也是不同的。
函数的内部其this也是指向window对象
行内绑定:其函数内部的this指向window对象
动态绑定:其函数内部的this指向当前正在操作的dom对象
问题:我们可不可以人为的更改函数内部的this指向呢?
答:可以,使用call或apply方法。
2、call或apply函数的定义
① call([thisObj[,arg1[,arg2[,argN]]]])
参数说明:
thisObj :要指向的对象
arg1,arg2…argN :参数列表
② apply([thisObj[,argArray]])
参数说明:
thisObj :要指向的对象
argArray :参数数组,要求是一个数组
问题:call方法与apply方法有何区别?
答:call方法与apply方法功能是完全一致的,都是为了改变函数内部的this指向,唯一的不同就是语法的不同。
例1:为每个对象绑定一个speak说话方法

运行结果:报错,当前对象不支持此属性或方法。原因:① 我们并没有为p1对象定义一个speak方法 ② speak函数内部的this指向window对象
例2:使用call或apply改进上题

3、call与apply方法执行流程
① 改变了speak函数内部的this指向
② 执行speak函数
4、参数使用

call与apply函数的更多相关文章
- js中bind、call、apply函数的用法
最近一直在用 js 写游戏服务器,我也接触 js 时间不长,大学的时候用 js 做过一个 H3C 的 web的项目,然后在腾讯实习的时候用 js 写过一些奇怪的程序,自己也用 js 写过几个的网站.但 ...
- 关于call和apply函数的区别及用法
call和apply函数是function函数的基本属性,都可以用于更改函数对象和传递参数,是前端工程师常用的函数.具体使用方法请参考以下案列: 例如: 申明函数: var fn = function ...
- Javascript中bind、call、apply函数用法
js 里函数调用有 4 种模式:方法调用.正常函数调用.构造器函数调用.apply/call 调用. 同时,无论哪种函数调用除了你声明时定义的形参外,还会自动添加 2 个形参,分别是 this 和ar ...
- (2)apply函数及其源码
本文原创,转载请注明出处,本人Q1273314690(交流学习) 总结: 就是MARGIN决定了你的FUN调用几次,每次传递给你的是什么维度的内容,而...是传递给FUN的(每次调用的时候都会被传 ...
- Javascript中call函数和apply函数的使用
Javascript 中call函数和apply的使用: Javascript中的call函数和apply函数是对执行上下文进行切换,是将一个函数从当前执行的上下文切换到另一个对象中执行,例如: so ...
- 博文推荐】Javascript中bind、call、apply函数用法
[博文推荐]Javascript中bind.call.apply函数用法 2015-03-02 09:22 菜鸟浮出水 51CTO博客 字号:T | T 最近一直在用 js 写游戏服务器,我也接触 j ...
- JavaScript Function.apply() 函数详解
apply()函数用于调用当前函数functionObject,并可同时使用指定对象thisObj作为本次函数执行时函数内部的this指针引用. 该函数属于Function对象,所有主流浏览器均支持该 ...
- JavaScript apply函数小案例
//回调函数1 function callback(a,b,c) { alert(a+b+c); } //回调函数2 function callback2(a,b) { alert(a+b); } / ...
- JavaScript中bind、call、apply函数用法详解
在给我们项目组的其他程序介绍 js 的时候,我准备了很多的内容,但看起来效果不大,果然光讲还是不行的,必须动手.前几天有人问我关于代码里 call() 函数的用法,我让他去看书,这里推荐用js 写服务 ...
随机推荐
- 如何在 iOS 8 中使用 Swift 实现本地通知(下)
在上集中,我们已经构建了一个简单的待办列表应用(to-do list app),这个应用可以在待办项过期时通过本地通知提醒用户.现在,我们要在之前的基础上添加以下功能:应用图标角标上显示过期待办项的数 ...
- 什么是mysql中的元数据
一:什么是元数据? 所谓元数据,就是表示数据的数据,这些数据五花八门,总之,只要不是我们存储到数据库里的数据,大多都可以理解为元数据.描述数据库的任何数据—作为数据库内容的对立面—是元数据.因此,列名 ...
- No Entertainment!
今天决定去打印一个“No Entertainment”的横幅,贴在电脑的旁边.这其实是很久以前的事了,却搁浅到了现在.也正因为如此,今天想起来也觉得格外刻不容缓,内心好似义愤填膺,便写下这愤慨的独白. ...
- 从零开始学JAVA(02)-用Eclipse写hello World
在安装好JAVA开发环境的前提下开始以下工作,以下文章参考http://blog.csdn.net/ojtojt/article/details/3476157文章,进行测试编写日记,内容版权归原作者 ...
- Dividing 多重背包 倍增DP
Dividing 给出n个物品的价值和数量,问是否能够平分.
- cocoapods 卸载,重装,高版本的使用
今天清理下电脑,发现自己电脑上的cocoapods经常出现的一个问题就是一些经常用的第三方库cocoapods搜不到,比如SDWebImage,然后就鼓捣了一下 $pos list 命令发现M 以后的 ...
- UIButton的简单操作和实际应用
不能使用点语法创建button的文本和颜色,因为button具有多种状态 //这里创建一个圆角矩形的按钮UIButton *button1 = [UIButton buttonWithType:U ...
- [原创] Web UI自动化应用测试框架实践 - 概览
之前为我们部门做的一个UI框架.不能纯粹解读为框架,主要是做了一些简单的分层设计,以解决稳定性.降低复杂性.提升可维护性以及快速构建测试用例等实际问题. 主要部分:1. 测试数据.主要提供测试类库需要 ...
- oracle-SQL语言基础-事务控制命令命令
事务控制命令命令 COMMITROLLBACKSAVEPOINTSET TRANSACTION 当第一条可执行的SQL语句开始执行,数据库事务就开始.随着下面任一事件发生,数据库事务结束:执行COMM ...
- React Native教程 - 调用Web API
react-native官网Fetch介绍:https://facebook.github.io/react-native/docs/network.html#content react-native ...