js函数之call和apply

一、含义

function test() {
    console.log('----')
}

//执行
test();
test.call()

        结果一致,调用test()默认会调用call,二者效果一致,call省略掉了。

二、改变this指向

        call还有一个很重要的功能是改变this的指向。

function Car(brand, color) {
    this.brand = brand;
    this.color = color;
    this.run = function () {
        console.log('run 方法')
    }
}

let newCar = {
    age: 30
}

1、不用 call

console.log('newCar', newCar)

打印结果:{}

2、使用 call

//参数1:对象,参数2,3,4……:其他参数
Car.call(newCar, '兰博基尼', 'red')
console.log('newCar', newCar)

打印结果:

{
   "brand": "兰博基尼",
   "color": "red"
}

        可以看出改变了this 的指向,和apply的区别是后面是一个数组,其他没啥区别,均可以改变this 指向Car.apply(newCar, ['兰博基尼', 'red'])。

三、应用

function Compute() {
    this.plus = function (a, b) {
        console.log(a + b)
    }
    this.minus = function (a, b) {
        console.log(a - b)
    }
}

function FullCompute() {
    Compute.apply(this)
    this.mul = function (a, b) {
        console.log(a * b)
    }
    this.div = function (a, b) {
        console.log(a / b)
    }
}

const compute = new FullCompute();
compute.plus(1,1);
compute.minus(1,1);
compute.mul(1,1);
compute.div(1,1);

打印结果:

四、全局this和函数this

        全局定义的this和函数内部定义的 this 相当于 window,例如:

function test() {
    this.a = 1;
    let b = 2
}

test();
console.log(a); // 1
console.log(b); // b is not defined

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值