this关键字与this的劫持

this关键字

定义:this所指的是他的函数正在被谁的对象调用。

window

function fx() {
    console.log(this);//window
   }
   fx()

这里的this所在的函数被第四行fx()调用,fx()是window的属性,所以这里this指的是window。

对象

var obj={
        a:function fx() {
          console.log(this);//obj对象
        }
      }
      obj.a()

这里的this所在的函数被obj.a()调用,a是obj的属性,所以这里this指obj。

数组:

数组是特殊的对象所以数组也可以调用函数

 var arr=[function fx() {console.log(this)},0,2,4]
      arr[0]()

这里的this被数组arr[0]()调用,所以这里this指arr数组。

this的劫持

call

 var obj1={
            name:"karen",
            say:function(){
               console.log(this.name)//jack
            }
        }
        var obj2={
            name:"jack"
        }
        obj1.say.call(obj2)//让obj1.say运行 而且 内部的this设置为obj2

apply 

 function fn(a,b){
            console.log(this,a,b,arguments)//["hello"] 80 90 [80,90,100]
        }
        fn.apply(["hello"]//指向该数据
                ,[80,90,100])//实参

   

bind

 var name="1111"
        var obj2={name:"jack"}
        var obj3={name:"marry"}
        var obj={
            name:"karen",
            say:function(){
                console.log(this.name)//jack
            }.bind(obj2)
        }

        var fn=obj.say
        fn()
        obj.say.call(obj3)
        obj.say.apply(obj3)
        fn.call(obj3)

只要调用该函数,函数中的this统统指向bind()中的数据。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神明也犯困

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值