2.35-apply&call&bind

apply() & call() & bind()

同:用於改變函數中this 的指向

異:apply()和call()使用傳參不同;apply()和call()可以實現函數調用,而bind()不能

        function fn(a, b) {
            console.log(this);
            console.log(a, b);
        }
        var obj = {
            a: 10
        }
        //fn.call(obj,1,2);
        // apply()
        //fn.apply(obj,[1,2]);

        // bind()可以改變函數中this指向 但它不會調用函數
        // 返回由指定this值和初始化參數改造的原函數拷貝,原函數不受影響
        var newFn = fn.bind(obj, 1, 3);
        newFn();

        //apply()第二種使用場景
        var arr = [10, 12, 45, 38];
        var max = Math.max.apply(null, arr);
        console.log(max);

bind()案例:

<body>
    <button id='btn'>接受驗證碼</button>
    <script>
        var btn = document.querySelector('#btn');
        var num = 10;
        btn.onclick = function() {
            //var that = this;
            this.innerHTML = '剩餘時間'+num + "s";
            setInterval(function() {
                num--;
                this.innerHTML = '剩餘時間'+num + "s";
            }.bind(this),1000);
        }
    </script>
</body>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章