call方法:

语法:call(thisObj,'',''........)

定义:调用一个对象的一个方法,以另一个对象替换当前对象

说明:call方法可以用来代替另一个对象调用一个方法。call方法可将一个函数的对象上下文初始的上下文改变为由thisObj指定的新对象,如果没有提供thisObj参数,那么global对象被用做thisObj

apply方法:

语法:apply(thisObj,['','',''....])

定义:应用某一个对象的方法,用另一个对象替换当前对象

如果argArray不是一个有效的数组或者不是arguments对象,那么将导致一个TypeError.如果没有提供argArray和thisObj任何一个参数,那么Global对象将用做thisObj,并且无法被传递任何参数

相同之处:

1、都是用来改变函数的this对象的指向
2、第一个参数都是this要指向的对象
3、都可以利用后续参数传参 不同之处:
1、call和apply都是对函数的直接调用,而bind方法返回的仍然是一个函数,因此后面需要加上()来进行调用才可以

案例一:bind与call、apply的区别

var a={
name:'阿姨请别把您闺女介绍给我',
sex:'男',
age:'24',
say:function(){
console.log(this.name+',今年'+this.age+'岁,性别'+this.sex)
}
} var b={
name:'就要把闺女介绍给你',
sex:'女',
age:'18'
}
a.say();//阿姨请别把您闺女介绍给我,今年24岁了,性别男 那么我们想一下如何让b用say的方法显示数据呢? 用call方法:a.say.call(b) 用apply方法:a.say.apply(b) 用bind方法:a.say.bind(b)()

案例二:call与apply的区别

var a={
name:'阿姨请不要把您闺女介绍给我',
sex:'男',
age:'18',
say:function(school,grade){
console.log(this.name+'性别'+this.sex+'年龄'+this.age+school+grade)
}
} var b={
name:'就喜欢把闺女介绍给你',
sex:'女',
age:'18'
} 现在我们看say方法中多了两个参数,我们通过call和apply的参数进行传参 用call方法:a.say.call(b,'清华','三年级') 用apply方法:a.say.apply(b,['清华','六年级']) call后面的参数与say方法中是一一对应的,而apply第二个参数是一个数组 用bind方法:a.say.bind(b,'清华','三年级')
但是由于bind返回的仍然是一个函数,所以我们可以在调用的时候在进行传参
a.say.bind(b)('清华','三年级')
由于IE6-IE8不支持该方法,所以若想在不同浏览器中使用所以我们要做下处理
兼容处理bind方式
if(!Function.prototype.bind){
Function.prototype.bind=function(obj){
var This=this;
var args=arguments;
return function(){
This.apply(obj,Array.prototype.slice.call(args,1))
}
}
}

注:还有一些不完善的部分,还会持续更新。显凑活着看!加油你们都是最棒的。么么哒!!!  另外大神可以指点不足之处

【巷子】:关于Apply、call、bind的详解的更多相关文章

  1. call(),apply()和bind()的详解使用:

    obj.call(thisObj, arg1, arg2, ...); obj.apply(thisObj, [arg1, arg2, ...]); 两者作用一致,都是把obj(即this)绑定到th ...

  2. JS中的call、apply、bind方法详解

    bind 是返回对应函数,便于稍后调用:apply .call 则是立即调用 . apply.call 在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(co ...

  3. c/c++ 标准库 bind 函数 详解

    标准库 bind 函数 详解 bind函数:接收一个函数名作为参数,生成一个新的函数. auto newCallable = bind(callbale, arg_list); arg_list中的参 ...

  4. 汇总apply()、call()、bind()用法详解

    先看明白下面: 例 1 obj.objAge; // 17 obj.myFun() // 小张年龄 undefined 例 2 shows() // 盲僧 比较一下这两者 this 的差别,第一个打印 ...

  5. JavaScript 中 apply 、call 的详解

    apply 和 call 的区别 ECMAScript 规范给所有函数都定义了 call 与 apply 两个方法,它们的应用非常广泛,它们的作用也是一模一样,只是传参的形式有区别而已. 原文作者:林 ...

  6. [荐]Js apply()和call()方法详解 - http://www.w3cfuns.com/article-5596443-1-1.html

    本帖最后由 默默DE人生 于 2013-3-19 13:22 编辑 Js apply方法详解我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文 ...

  7. 《Javascript高级程序设计》读书笔记之bind函数详解

    为什么需要bind var name = "The Window"; var object = { name: "My Object", getNameFunc ...

  8. javascript 中的apply()和call()方法详解

    1.语法 先来看看JS手册中对call的解释: call 方法 调用一个对象的一个方法,以另一个对象替换当前对象. call([thisObj[,arg1[, arg2[, [,.argN]]]]]) ...

  9. bind函数详解(转)

    var name = "The Window"; var object = { name: "My Object", getNameFunc: function ...

随机推荐

  1. Apache HttpComponents 学习

    基本上,用户常用的就是HttpClient:它基于Http Core部分,但 Core部分太过于 low level,不建议使用,除非有特殊需要. Apache HttpComponentsTM 项目 ...

  2. dirname(__FILE__) 介绍

    简单地说:      __FILE__     返回当前 路径+文件名      dirname(__FILE__) 返回当前文件路径的 路径部分 (后面没有“\”号)      dirname(di ...

  3. hadoop基础学习---数据管理策略

    上图中的ABCDE都代表默认大小64M的数据块 nameNode与dataNode之间有一个心跳机制,datanode每隔多秒钟定期的发送心跳到nameNode

  4. android大扫盲之SurfaceView,SurfaceHolder,SurfaceHolder.CallBack

    最近接触到了SurfaceView,SurfaceHolder,SurfaceHolder.CallBack,一直不求其解,现在来粗浅认识一下它们. 先看一下官方的定义: 1.SurfaceView ...

  5. 最新版ChemDraw 15.1 免费获取下载

    ChemDraw 15.1 Pro是最新版的ChemOffice套件的个人生产力工具,它可以帮助科学家有效地捕捉和分享工作内容,通过可视化功能对结果获得更深入的了解.现在为大家带来好消息,ChemOf ...

  6. WinSock1.1和WinSock2.0

    网络编程很重要,说到网络编程就不得不提Socket编程. Windows提供了Windows Socket API(简称WSA),WinSock,目前有两个版本:WinSock1.1 and WinS ...

  7. (转载)用vs2010开发基于VC++的MFC 串口通信一*****两台电脑同一个串口号之间的通信

    此文章以visual C++数据採集与串口通信測控应用实战为參考教程 此文章适合VC++串口通信入门 一.页面布局及加入控件 1, 安装好vs2010如图 2, 新建一个基于VC++的MFC项目com ...

  8. POJ 1038 Bug Integrated Inc(状态压缩DP)

    Description Bugs Integrated, Inc. is a major manufacturer of advanced memory chips. They are launchi ...

  9. oracle数据库字符集

    Oracle字符集的基本原理 1. Oracle服务器字符集 oracle以哪种字符编码存储字符,可以通过以下语句查出数据库字符集的设置. 方法1 SQL> select * from v$nl ...

  10. On iPad, UIImagePickerController must be presented via UIPopoverController

    本文转载至:http://blog.csdn.net/k12104/article/details/8537695 On iPad, UIImagePickerController must be p ...