zxdfe / FE-Interview

Every step counts
34 stars 1 forks source link

第15题:改变this的指向有哪些方法?它们的区别是? #15

Open zxdfe opened 1 year ago

Moooodena commented 1 year ago

call, apply, bind call和bind接收一个参数列表,而apply接受一个数组; call和apply使用后都会立即调用执行,而bind返回一个函数,需要手动调用;

BlueSky-Engineer commented 1 year ago

改变this的指向有:

  1. call
  2. apply
  3. bind

区别:

  1. call常用做继承
  2. apply经常和数组有关系,比如想使用Math里面的函数
  3. bind不调用函数,但还想改变this指向,比如在定时器里面改变this指向
dyxfe commented 1 year ago
1、call
2、apply
3、bind

区别:
call / bind 传的是参数列表, apply 传递的是一个数组
call / bind 是直接执行的, bind 不会直接执行, 返回的是这个函数,需要手动调用
Sophora77 commented 1 year ago

改变this指向的方法有:

  1. call ⇒ fn.call (this指向谁,参数列表)
  2. apply ⇒ fn.apply (this指向谁, [数组])
  3. bind ⇒ fn.bind(this指向谁, 参数列表)

区别:

  1. call接收的是参数列表,apply接收的是数组
  2. call和apply会立即执行,bind返回函数,需要手动调用
CDwenhuohuo commented 1 year ago

call()接受两个参数,一个是this指向,另一个是参数列表,会立即执行函数 apply() 接受两个参数,一个是this指向,另一个是以数组的形式接受的参数列表,会立即执行函数 bind()接受两个参数,一个是this指向,另一个是参数列表,不会立即执行函数,除非手动调用,返回的是一个改变this指向后的新函数