call,apply,bind修改函数内部this指向

1.call的应用,(立即调用)

// // 1.call改变函数内部this指向的运用
            var o={
                name:"andy",
                age:12,
            }
            function fn(num1,num2){
                console.log(this)
                console.log(num1+num2)
            }
            fn.call(o,1,3)

2.apply的应用(立即调用)

// 2.apply改变函数内部this指向的运用,传递参数必须是数组
            var arr=[2,6,7,5,77,4]
            var max=Math.max.apply(Math,arr)
            var min=Math.min.apply(Math,arr)
            console.log(max)
            console.log(min)

3.bind的应用(不会立即调用),常用于定时器

        <button>按钮三秒后开启</button>
<script>
var btn1 = document.querySelector('button');
            btn1.onclick = function() {
                this.disabled = true; //这个this指向的是btn这个按钮,disabled为true即为不可用状态
                setTimeout(function() {
                    this.disabled = false; //定时器函数里面的this指向的是window
                }.bind(this), 3000); //bind改变this的指向,这个this指向的是btn这个对象
            }
</script>

 

<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<script>
var btn1 = document.querySelectorAll('button');
            for(var i=0;i<btn1.length;i++){
                btn1[i].onclick=function(){
                    this.disabled=true
                    setTimeout(function(){
                        this.disabled=false
                    }.bind(this),2000)
                }
            }
</script>

 总结

 

posted @ 2023-01-28 11:41  小闫的姑娘  阅读(13)  评论(0编辑  收藏  举报