javascript中的this指向

规则1:使用new后this指向new创建的对象

规则2:使用call 或者apply   this指向你传入的对象(传入的对象不能为null、undefined 不然指向window)

规则3: this指向 函数最后被调用位置

规则4:默认: this指向全局(window)对象 严格模式下指向undefined

方法/步骤

  • //规则1:使用new后this指向new创建的对象

    function __new() {   

      this.a = "测试"   

      console.log(this)

    }

    var a = new __new()

     

    //执行结果如下图

    javascript中的this指向

  • //规则2:使用call 或者apply   this指向你传入的对象(传入的对象不能为null、undefined 不然指向window)

    function aa() {

       console.log(this)

       console.log(this.a)

    }

    var b = {

       a: '我是b对象'

    }

    aa.call(b)//aa.apply(b)

     

    //执行结果如下图

     

    javascript中的this指向

  • //规则3 :this指向 函数最后被调用位置

    //例子1

    function a(x) {

       console.log(this)

       console.log(this === x)

    }

    var b = {

       c: a

    }

    b.c(b)  //可理解为a在b中被调用执行了,调用的位置是在b,this指向b

     

     

    var win = b.c //注意这里是js引用赋值。this指向(全局)window对象

    win(b)

     

     

    //执行效果如下图

    javascript中的this指向

  • //规则3:this指向 函数最后被调用位置

    //例子2

    var c = {

       dd: {

           a:function(x) {

               console.log(this === x)

           }

       }

    }

    c.dd.a(c)

    c.dd.a(c.dd) //这才是真正的调用位置

     

    //执行效果如下图

    javascript中的this指向

  • //默认

    function aa() {

       function bb(){

           console.log(this)

           console.log(this === window)

       }

       bb()

    }

    aa()

    /*下面也是如此*/

     function aa() {

     bb()

     }

     function bb(){

    console.log(this)

     console.log(this === window)

     }

     aa()

     

    //执行效果如下

    javascript中的this指向

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值