call、apply、bind 区别

2019-01-10 07:46:58来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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();

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:关于页面传参,decodeURI和decodeURIComponent

下一篇:javascript--事件对象e的来源、意义、应用及其属性的用法 fu