leslie1943/blog

call vs apply

Opened this issue · 0 comments

call vs apply

  • callapply 的作用是一样的, 都是为了改变函数在运行时的上下文的, 为了改变函数体内部 this的指向

  • call的参数是按个数传入的, apply的参数是放到一个数组中进行传递

fn.call(this, p1,p2,p3)
fn.apply(this, arguments)
// demo FOR apply 🚀
const dog = {
  name: 'Snoopy',
  say(first, last) {
    console.info(first + ' ' + this.name + ' ' + last)
  },
}

const cat = {
  name: 'Tom',
}

dog.say('Hello', 'World') // Hello Snoopy World
dog.say.apply(cat, ['Hello', 'World']) // Hello Tom World
// demo FOR call 🚀
const dog = {
  name: 'Snoopy',
  say(first, last) {
    console.info(first + ' ' + this.name + ' ' + last)
  },
}

const cat = {
  name: 'Tom',
}

dog.say('Hello', 'World') // Hello Snoopy World
dog.say.call(cat, 'Hello', 'World') // Hello Tom World