call、apply、bind笔记

简介: call、apply、bind笔记

call、apply、bind的基本概念



call是一个方法,是函数的方法

call可以调用函数,改变函数中this的指向

  function fun(){
    console.log("hello world")
   };
  fun.call();


call挨个传参,不需要使用数组

apply需要用数组传参

bind不会调用函数,只能作为返回值返回一个函数

  let dog = {
      name: "旺财",
      sayName(){
         console.log("我是"+this.name)
      },
      eat(food1,food2){
          console.log("我喜欢吃"+food1+food2)
      }
  }
  let cat = {
      name: "喵喵"
  }
  dog.sayName();//我是旺财
  dog.sayName.call(cat);//我是喵喵
  dog.eat.call(cat);//我喜欢吃undefinedundefined,因为只改变了对象,没有传参
  dog.eat.call(cat,"鱼","肉");//假如传两个参数的话,挨个传
  dog.eat.apply(cat,["鱼","肉"])//apply需要用数组传参
  let fun2 = dog.eat.bind(cat,"鱼","肉")//bind不会调用函数,只能作为返回值返回一个函数
  fun2();//我喜欢吃鱼肉


call、apply、bind的实际应用



继承:子类可以使用父类的方法

call的好处,实现多重继承

 function Animal(){
        //this指向小cat
        this.eat = function(){
          console.log("吃东西")
     }
 }
 function Bird(){
         this.fly = function(){
             console.log("我会飞")
         }
 }
 function Cat(){
     //调用animal函数,这里的this指向小cat,
     Animal.call(this);
     //验证this指向的是小cat
     this.sayName = function(){
         console.log("输出自己的名字")
     }
     //多重继承,Bird里面的this指向小cat
     Bird.call(this);
 }
 let cat = new Cat();//创建对象,this就指向创建的cat
 cat.eat(); //吃东西
 cat.sayName(); //输出自己的名字
 cat.fly(); //我会飞


目录
打赏
0
0
0
0
3
分享
相关文章
new bind apply call instanceof 等笔记
new bind apply call instanceof 等笔记
40 0
call、bind、apply区别
【10月更文挑战第26天】`call`、`bind` 和 `apply` 方法在改变函数 `this` 指向和参数传递方面各有特点,开发者可以根据具体的需求和使用场景选择合适的方法来实现更灵活和高效的JavaScript编程。
37 1
比较一下apply/call/bind ?
本文首发于微信公众号“前端徐徐”,详细介绍了 JavaScript 中 `apply`、`call` 和 `bind` 方法的概念、使用场景及手动实现。主要内容包括: - **apply**:使用数组作为参数调用函数,并指定 `this`。 - **call**:直接传递参数调用函数,并指定 `this`。 - **bind**:返回一个绑定了 `this` 和部分参数的新函数。 文章还对比了这三个方法的区别,并提供了手动实现的代码示例。
27 2
|
8月前
call\apply\bind详解
call\apply\bind详解
39 0
bind、call、apply 区别
bind、call、apply 区别
85 0
前端学习案例1:apply,call,bind使用1
前端学习案例1:apply,call,bind使用1
91 0
前端学习案例1:apply,call,bind使用1
前端学习案例2:apply,call,bind使用2
前端学习案例2:apply,call,bind使用2
82 0
前端学习案例2:apply,call,bind使用2
apply、bind和call
apply、bind和call
99 0