call、apply和bind的学习
相似之处:
1、都是用来改变函数的this对象的指向的。
2、第一个参数都是this要指向的对象。
3、都可以利用后续参数传参。
var xw = { name : "小王",gender : "男" age : 24, say : function() {console.log(this.name + " , " + this.gender + " ,今年" + this.age); }
var xh = { name : "小黄" ,gender : "女", age : 18 }
调用xw.say(); //这个简单 打印出:小王,男,今年24
那么如何用xw的say方法来显示xh的数据呢。这时候就可以用到call、apply、bind
xw.say.call(xh); //这时打印的就是: 小黄,女,今年18
xw.say.apply(xh);
xw.say.bind(xh)();
这三句返回一样;

bind比call和apply多了(),所以bind返回函数需要自己再执行调用一次,而bind和call都是对函数的直接调用;
接下来我们看一下call和apply的区别:
var xw = { name : "小王",gender : "男" age : 24, say : function(city,school) {console.log(this.name + " , " + this.gender + " ,今年" + this.age+',在'+city+school); }
var xh = { name : "小黄" ,gender : "女", age : 18 }
方法里带多个参数,
xw.say.call(xh,'厦门','双十中学');
xw.say.apply(xh,['厦门','双十中学']);
xw.say.bind(xh,'厦门','双十中学')(); //小黄,女,今年18,在厦门双十中学
或者xw.say.bind(xh)('厦门','双十中学');

没带参数则是underfind;
这里call和apply的区别主要在于带参的形式,可以记住apply是以array数组形式都是,和call是...arg形式,bind和call一样;
call、apply和bind的学习的更多相关文章
- JS之apply,call,bind区别
为了加深对基础知识的理解,今天再复习下js中的apply,call,bind的区别和用法.整理笔记的过程也是一个再次学习的过程. apply和call js中的调用apply和call方法可以改变某个 ...
- JavaScirpt的this指向 apply().call(),bind()个人笔记
写在前头: 本站内容为个人学习记录,纯属个人观点,不喜勿喷,欢迎指正! 笔记记录缘由:JavaScript的流行趋势已经势不可挡,衍生的AngularJs,Node.js,BootStrmp中小企业的 ...
- 使用call、apply和bind解决js中烦人的this,事件绑定时的this和传参问题
1.什么是this 在JavaScript中this可以是全局对象.当前对象或者任意对象,这完全取决于函数的调用方式,this 绑定的对象即函数执行的上下文环境(context). 为了帮助理解,让我 ...
- call、apply、bind一直是不求甚解!
一直感觉代码中有call和apply就很高大上(看不懂),但是都草草略过,今天非要弄明白!以前总是死记硬背:call.apply.bind 都是用来修改函数中的this,传参时,call是一个个传参, ...
- 简单模拟实现javascript中的call、apply、bind方法
目录 引子 隐式丢失 硬绑定 实现及原理分析 总体实现(纯净版/没有注释) 写在最后 引子 读完<你不知道的JavaScript--上卷>中关于this的介绍和深入的章节后,对于this的 ...
- 一起手写吧!call、apply、bind!
apply,call,bind都是js给函数内置的一些api,调用他们可以为函数指定this的执行,同时也可以传参. call call 接收多个参数,第一个为函数上下文也就是this,后边参数为函数 ...
- JS核心系列:浅谈 call apply 与 bind
在JavaScript 中,call.apply 和 bind 是 Function 对象自带的三个方法,这三个方法的主要作用是改变函数中的 this 指向,从而可以达到`接花移木`的效果.本文将对这 ...
- Javascript中call,apply,bind方法的详解与总结
在 javascript之 this 关键字详解 文章中,谈及了如下内容,做一个简单的回顾: 1.this对象的涵义就是指向当前对象中的属性和方法. 2.this指向的可变性.当在全局作用域时,thi ...
- JS中call、apply、bind使用指南,带部分原理。
为什么需要这些?主要是因为this,来看看this干的好事. box.onclick = function(){ function fn(){ alert(this); } fn();}; 我们原本以 ...
随机推荐
- Spring-IOC(DI)的三种注入方式
spring为方便不同的需求,为我们提供了3中不同的注入方式分别是set.get方法注入,构造注入还有p命名空间注入,老规矩,直接上代码 首先创建实体类Student public class Stu ...
- Adam项目展示微软研究院人工智能领域新突破
编者按:在美国时间7月14日举行的2014年微软教育峰会上,Adam项目面对牵上台的3只小狗,一一准确地报出了它们的品种.Adam项目代表了微软研究院在机器学习和人工智能领域的前沿进展.它可不仅仅认得 ...
- Archlinux安装与出现的问题
arch的安装 arch的安装主要参考官网arch wiki,基本上按照Beginners' guide的步骤就可以安装,不过这里推荐用U盘刻录的方法来安装,我尝试过用硬盘安装的办法,还是感觉U盘刻录 ...
- Linux Ubuntu 常见的压缩命令
小知识: Linux上常见的压缩命令就是gzip与bzip2,compress已经不再流行.gzip是有GNU计划所开发出来的压缩命令,该命令已经替换了compress命令.后来GNU又开发出bzip ...
- haproxy笔记之四:配置文件中的关键字参考
3.1 balance balance <algorithm> [ <arguments> ]balance url_param <param> [check_po ...
- 插入排序算法&算法分析
- 添砖加瓦:几种常见的数据摘要算法(MD5、CRC32、SHA1和SHA256)
1.算法概述 数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名.数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密.数据摘要算法也被称为哈希(H ...
- 在 Ubuntu 14.04 安装 PyCharm 5 & Oracle JDK
由于授权问题,在较新的Linux发行版本中都不再包含Oracle Java,取而代之的是OpenJDK.Ubuntu也是如此. OpenJDK能满足大部分的应用程序运行条件,但PyCharm无法在Op ...
- Thinkpad E40热键不能使用解决办法
Thinkpad E40 0578M68笔记本电脑安装windows7 64bit和联想官网驱动后,键盘最上面一排热键中,除了静音.减小音量和增大音量之外,其余的热键均不可用,解决办法: 到联想官网下 ...
- 直接拿来用,10个PHP代码片段(收藏)
直接拿来用,10个PHP代码片段(一) http://www.csdn.net/article/2013-07-23/2816316-10-php-snippets-for-developers 直接 ...