改变函数内部this指向的三种方法

本文详细介绍了JavaScript中函数调用的三种方式:call、apply和bind。call方法可以改变函数内部的this指向并直接执行;apply与call类似,但参数需以数组形式传入;bind则用于创建一个新的函数,保留指定的this值和初始参数。通过这些方法,可以实现函数的继承和特定上下文的调用。
摘要由CSDN通过智能技术生成

1,通过调用call()函数


 call第一个作用可以调用函数 第二个可以改变函数内this的指向 call也可以实现继承

        var o={
            name:"td"
        }
        function fn(){
            console.log(this)
        }
        fn.call() //指向window
        fn.call(o) //指向o这个对象
        
        function father(uname,age){
            this.uname=uname
            this.age=age
        }
        function son(uname,age){
            father.call(this,uname,age)//this指向son
        }
        var son1=new son("ldh",11)
        console.log(son1)//son {uname: "ldh", age: 11}
    

 2,通过调用apply()函数

可以改变this的指向,参数必须为数组或者伪数组,第一个参数为this的指向,第二个为数组

我们也可以用apply借助于数学内置对象求最大值

        var o={
            name:"td"
        }
        function fn(){
            console.log(this)
        }
        fn.apply() //指向window
        fn.apply(o) //指向o这个对象

        var arr=[1,2,3]
        var max=Math.apply(Math,arr)
        var min=Math.apply(Math,arr)
        console.log(max,min)//3 ,1
  
    

3,bind方法 

bind方法不会调用函数但是能改变函数内的this指向

bind(this.arg,arg1,arg2)

this.arg 在函数运行时指定的this的值

agr1 arg2 传递的参数

返回指定的this值和初始化参数改造原函数拷贝

        var o={
            name:'and'
        }
        function fn(a,b){
            console.log(this)
        }
        var f=fn.bind(o,1,2)
        f()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值