Javascript函数内this对象

在函数内部除了有arguments这个对象,还有个this对象。在绝大多数情况下,函数的调用方式决定了this的值。this不能在执行期间被赋值,并且在每次函数被调用时this的值也可能会不同。对于箭头函数,函数体内this对象就是定义时所在的对象,而不是调用时所在对象
1.全局环境
无论是否在严格模式下,在全局执行环境中(在任何函数体外部)this 都指向全局对象。

<script>
    // 在浏览器中, window 对象同时也是全局对象:
    console.log(this === window); // true
    a = 37;
    console.log(window.a); // 37
    this.b = "MDN";
    console.log(window.b)  // "MDN"
    console.log(b)         // "MDN"
</script>

2.作为对象的方法
当函数作为对象里的方法被调用时,它们的 this 是调用该函数的对象。

<script>
	var num = 10
    var obj = {
        num: 100,
        f: function () {
            console.log(this.num)
        },
        fun:()=>{
        	console.log(this.num)
        }
    };
    var fn=obj.f
    obj.f(); // 100    this被绑定到obj
    obj.fun();//10      因箭头函数没有this,这里是指向定义时所在的对象 window
    fn();     //10        这里的this 指向window
</script>

3.作为构造函数
当一个函数用作构造函数时(使用new关键字),它的this被绑定到正在构造的新对象。
4.作为一个DOM事件处理函数
当函数被用作事件处理函数时,它的this指向触发事件的元素

<script>
    var mybtn = document.querySelector('#btn');
    mybtn.onclick = function () {
        console.log(this); //  是按钮调用了this所在的这个函数, 所以this就是按钮这个元素
    }
    mybtn.onclick = function () { fn2(); } // 相当于 window.fn2()
    function fn2() {
        console.log(this); // this => window
    }
    mybtn.onclick = function () { fn3(this); }
    function fn3(a) {
        console.log(a); // this => 按钮元素
    }
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值