bind(),call(), apply()方法的区别是什么?

bind(),call(), apply()方法的区别是什么?

  • 共同点:改变this指向,任何调用都不在起作用

  • bind() 改变this的指向,不会调用函数,返回一个新的函数

        var o ={a:'abc'};
        var fn1 = fn.bind(o);//this指向o  相当o.fn
        fn1();//
  • call( ) 改变this指向并调用函数---判断数据类型

        var arr = [1,2,4]
        var str = '1231';
        console.log(Object.prototype.toString.call(arr));//返回Array数据类型
        console.log(Object.prototype.toString.call(str));返回String数据类型
  • apply() 改变this指向并调用函数,后面的参数是以数组展示

            //求一数组中的最大值
            var  arr = [2,13,30,1,4];
            console.log(Math.max.apply(null,arr));//利用apply()可以把数组展开单独传参
            console.log(Math.max.apply(Math,arr));
              //把数组中的元素一行展示
            console.log.apply(console,arr);//指向可以是null,主要是为了把数组展开传给console

猜你喜欢

转载自www.cnblogs.com/zcsmile/p/10961983.html
今日推荐