call()和apply():可以改变this的指向

论坛 期权论坛 脚本     
已经匿名di用户   2021-12-20 01:35   1974   0

call()和apply():可以改变this的指向

运用场景:
假如你现在需要开发一个功能A,前端小明写了个功能B,而你发现功能A里面的部分功能和小明写的功能B一摸一样,你可以拿过就可以用,这个时候你就可以用到call(简单点说就是:借用别人的函数来实现自己的功能)

 // call改变this指向
    function Tyre(color, size) {//车轮胎
        this.color = color;
        this.size = size;
    }

    function Cardoor(width, height) {//车门
        this.width = width;
        this.height = height;
    }

    function Car(color, size, width, height) {//车组装
        Tyre.call(this, color, size);
        Cardoor.call(this, width, height)
    }

    let car = new Car('red', 388, 2, 1.6);
    console.log(car);

// apply改变this指向
    function Tyre(color, size) {//车轮胎
        this.color = color;
        this.size = size;
    }

    function Cardoor(width, height) {//车门
        this.width = width;
        this.height = height;
    }

    function Car(color, size, width, height) {//车组装
        Tyre.apply(this, [color, size]);
        Cardoor.apply(this, [width, height])
    }

    let car = new Car('red', 388, 2, 1.6);
    console.log(car);

call和apply都可以改变this的指向,区别是传参列表不同:
call 需要把实参按照形参的个数传入
apply 需要传入一个arguments

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP