javasctipt中bind,apply,call的相同点是:

  1,都是用来改变this的指向;

  2,都可以通过后续参数进行传参;

  3,第一个参数都是指定this要指向的对象;

  

  不同点:

  1,调用方式不同,apply和call的调用方式一致,但是bind方式就不一样了;

var xz = {
name:'小张',
age:20,
show: function () {
console.log("name: %s; age: %d;",this.name,this.age);
}
} var xh = {
name:'小红',
age:22
}; xz.show();
xz.show.apply(xh);
xz.show.call(xh);
     xz.show.bind(xh)(); //bind方法返回的任然是一个方法,所以还需要加()进行调用;

  2,传参方式不同

var xz = {
name:'小张',
age:20,
show: function (school,grade) {
console.log("name: %s; age: %d; school:%s; grade:%s",this.name,this.age,school,grade);
}
} var xh = {
name:'小红',
age:22
}; xz.show('四川大学','12级4班');
xz.show.apply(xh,['电子科技大学','10级5班']);
xz.show.call(xh,"电子科技大学成都学院",'12级4班');
xz.show.bind(xh,"电子科技大学成都学院",'12级4班')();
xz.show.bind(xh)("电子科技大学成都学院",'12级4班');

  apply的传参方式是数组形式;call和bind的传参方式相同,使用一一对应的方式传入,而bind还有另外一种传参方式就是在后面的回调里面穿入参数

javascript中bind,apply,call的相同和不同之处的更多相关文章

  1. 博文推荐】Javascript中bind、call、apply函数用法

    [博文推荐]Javascript中bind.call.apply函数用法 2015-03-02 09:22 菜鸟浮出水 51CTO博客 字号:T | T 最近一直在用 js 写游戏服务器,我也接触 j ...

  2. javascript中call,apply,bind的用法对比分析

    这篇文章主要给大家对比分析了javascript中call,apply,bind三个函数的用法,非常的详细,这里推荐给小伙伴们.   关于call,apply,bind这三个函数的用法,是学习java ...

  3. 面试官:能解释一下javascript中bind、apply和call这三个函数的用法吗

    一.前言    不知道大家还记不记得前几篇的文章:<面试官:能解释一下javascript中的this吗> 那今天这篇文章虽然是介绍javascript中bind.apply和call函数 ...

  4. javascript中的apply,call,bind详解

    apply.call 在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向. Jav ...

  5. Javascript中的apply、call、bind

    apply . call .bind 三者都是用来改变函数的this对象的指向的: apply . call .bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文: apply . ...

  6. javascript中bind函数的作用

    javascript的bind的作用 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...

  7. JavaScript中的apply()和call()

    可以将call()和apply()看做是某个对象的方法,通过调用方法的形式来间接调用函数. call()和apply()的第一个实参是要调用函数的母对象,它是调用上下文,在函数体内通过this来获得对 ...

  8. 关于JavaScript中bind、applay、call的区别

    在JavaScript中this的指向一直是一个困扰我们的问题,在JavaScript中this的指向是不固定的,但是我们可以通过使用bind().call().apply()来改变this的指向,但 ...

  9. JavaScript中的apply和call函数详解(转)

    每个JavaScript函数都会有很多附属的(attached)方法,包括toString().call()以及apply().听起来,你是否会感到奇怪,一个函数可能会有属于它自己的方法,但是记住,J ...

随机推荐

  1. Portlet 通信过程详解

    Portlet 通信过程详解 在 Portal 的开发过程中,Theme 与 portlet 之间的通信,以及 portlet 之间的通信是开发人员常常遇到的问题.通常 Portlet 之间需要能够互 ...

  2. spoj LCS

    初识后缀自动机: 推荐学习:http://blog.sina.com.cn/s/blog_7812e98601012dfv.html #include<cstdio> #include&l ...

  3. java中获得jar包执行路径的方法

    当我们由于某种需要需要的得到jar的路径是可以用下面的方式来获得: basePath = new Solution().getClass().getProtectionDomain().getCode ...

  4. Java异常处理之throws抛出异常

    package com.test; import java.io.FileReader; public class Test2 { public static void main(String[] a ...

  5. Structs 原理图

    Struts开源架构很好的实现了MVC模式,MVC即Model-View-Controller的缩写,是一种常用的设计模式.MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化.MV ...

  6. 【HDOJ】1069 Monkey and Banana

    DP问题,我是按照边排序的,排序既要考虑x也要考虑y,同时在每个面中,长宽也要有序.还有注意状态转移,当前高度并不是之前的最大block叠加的高度,而是可叠加最大高度+当前block高度或者是当前bl ...

  7. Oracle Form属性、内置子程序、触发器、系统变量简要

    一.属性 1.1 通用属性 名称(Name) 子类信息(Subclass Information) 备注(Comments) 标题(Title) 方向(Direction) 字体名称(Font Nam ...

  8. 用U盘安装系统

    下述的前提就是:如果你想要装win7,win8系统的话,你需要准备一个大于等于4G的U盘,但是如果你想装XP,Ubuntu等小系统就可以只要1G的U盘就行了,温馨提示,记得将U盘里的重要东西移走,因为 ...

  9. WPF——绑定数据库数据(Listview)

    一.首先先画一个窗体,放进一个Listview 然后给每列起好名字,并且绑定的数据是临时表的列名 二.造一个临时表用来存储数据,并且将扔进去的Listview绑定到这个临时表DataTable上面 p ...

  10. 教程 打造OS X Mavericks原版 EFI Clover 引导安装

    自从 Mavericks 10.9 发布DP版到现在的GM版以来,以前Clover引导原版InstallESD.dmg方式安装原版的方法已经不能使用,而且已经不能引导安装了,所以从GM版发布以前,终于 ...