欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

call、apply、bind 区别

程序员文章站 2022-04-19 22:25:32
1.为什么要用 call 、apply? 为了 改变方法里面的属性而不去改变原来的方法 2.call 与apply 区别 1)call 参数固定 apply 参数不固定 apply 参数是放在数组里面的 2)call 可以将伪数组转换为真正的数组例如一个例子: 3) bind 是返回对应函数,便于稍 ......

1.为什么要用 call 、apply?
为了 改变方法里面的属性而不去改变原来的方法

function fruits() {}
 
fruits.prototype = {
    color: "red",
    say: function() {
        console.log("my color is " + this.color);
    }
}
 
var apple = new fruits;
apple.say();    //my color is red

     banana = {
 
    color: "yellow"
}
   }

apple.say.call(banana);         //my color is yellow
a
apple.say.apply(banana);    //my color is yellow

2.call 与apply 区别
1)call 参数固定 apply 参数不固定 apply 参数是放在数组里面的
2)call 可以将伪数组转换为真正的数组
例如一个例子:

    function log(){
         var args = array.prototype.slice.call(arguments);
         args.unshift('(app)');
         console.log.apply(console, args);
   };
log("hello world");    //(app)hello world

  3)  bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。

   function show(sex){
    console.log("普通函数"+sex);
  }
  var person={
    name:"aa",
    age:14
  };
show.call(person,"男");
show.apply(person,["女"]);
//对于bind来说,用法更加的灵活
 show.bind(person,"不明")(
     );
// var ss=show.bind(person,"不明");
// ss();