zoukankan      html  css  js  c++  java
  • call apply bind 的区别

    1.call和apply都是对函数的直接调用,而bind方法返回的仍然是一个函数,因此后面还需要()来进行调用才可以

     1 var xw={
     2     name: "小王",
     3     gender: "男",
     4     age: 24,
     5     say: function(school,grade){
     6         alert(this.name+" , "+this.gender+" ,今年"+this.age+" ,在"+school+"上"+grade);
     7     }
     8 }
     9 var xh={
    10     name: "小红",
    11     gender: "女",
    12     age: 18
    13 }

    我们通过call/apply的参数进行传参。对于call来说是这样的

    xw.say.call(xh,"实验小学","六年级");

    而对于apply来说是这样的

    xw.say.apply(xh,["实验小学","六年级"]);

    call后面的参数与say方法中是一一对应的,而apply的第二个参数是一个数组,数组中的元素是和say方法中一一对应的,这就是两者最大的区别。那么bind怎么传参呢

    xw.say.bind(xh,"实验小学","六年级")();

    但是由于bind返回的仍然是一个函数,所以我们还可以在调用的时候再进行传参。

    xw.say.bind(xh)("实验小学","六年级");

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

    如果我们有一个对象banana= {color : “yellow”} ,我们不想对它重新定义 say 方法,那么我们可以通过 call 或 apply 

  • 相关阅读:
    Redis数据类型和基本操作
    Redis持久化
    Redis安装
    MySQL5.7二进制包安装
    Django ORM多表操作
    Django中启用事务
    Django ORM单表操作
    MySQL事务
    用顺序栈实现十进制向二进制转化
    顺序栈
  • 原文地址:https://www.cnblogs.com/yu-hailong/p/7525203.html
Copyright © 2011-2022 走看看