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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM