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