Skip to content

JavaScript理解call、apply #7

@qppq54s

Description

@qppq54s

网上搜索call和apply的使用方法,大多数时候总是把这两个方法搞混,所以我尝试用一些取巧的方式去记忆。

call和apply的共同点:

  1. 第一个参数传入的是执行上下文的对象,也就是改变方法的this指向到这个参数。
  2. 都会执行函数

以上都不理解?没事,看代码

function getName() {
  console.log(this.name)
}
getName(); // undefined
getName.call({name: 'qp'}); // qp
getName.apply({name: 'qp'}); // qp

call和apply的不同点:

  1. call方法后面的参数是一个列表,而apply方法第二个参数是array(数组)
    如果容易记混的话,就看apply和array长得特别像,就不会搞错了。

看代码

function getName(...param) {
  console.log(param)
}
getName(); // undefined
getName.call({}, 'qp', 'qp'); // ['qp', 'qp']
getName.apply({}, ['qp', 'qp']); // ['qp', 'qp']

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions