call, apply,bind的区别与用法

 call, apply,bind的区别
           相同点:都可以用来改变this指向
          不同点:
          call, apply:传参方式不同;
          call从第二个参数开始都是传给函数的;
          apply只有两个参数,第二个参数是数组,数组中的值都是传给函数。
          call与apply改变函数的this指向后会立即执行
          bind是改变函数的this指向并返回这个函数,并不会立即执行
          call与apply的返回值是函数的执行结果,bind的返回值是改变this指向的拷贝
举例:
var person = {
            names: 'Anne',
            age: '23'
        }
        var sayHi = function (gender, hobbit) {
            console.log(`我是${this.names},今年${this.age},爱好${hobbit},欢迎你的关注^_^`)
        }
        sayHi.call(person, 23, '前端开发')

        var person1 = {
            names: 'Anne1',
            age: '23'
        }
        var sayHi1 = function (gender, hobbit) {
            console.log(`我是${this.names},今年${this.age},爱好${hobbit},欢迎你的关注^_^`)
        }
        sayHi1.apply(person1, [23, '吃吃喝喝^_^'])

        var person2 = {
            names: 'Anne2',
            age: '23'
        }
        var sayHi2 = function (gender, hobbit) {
            console.log(`我是${this.names},今年${this.age},爱好${hobbit},欢迎你的关注^_^`)
        }
        sayHi2.bind(person2, 23, '旅游')()
call, apply适用场景:
  看参数数量,参数越多,最好用apply,将参数放入数组中,进而函数调用,参数少的话,call就行了
 
posted @ 2021-10-21 15:30  eternityAsr  阅读(88)  评论(0编辑  收藏  举报