资讯专栏INFORMATION COLUMN

this不懂之处的理解

xiaoxiaozi / 3296人阅读

摘要:简单的指向全局函数中的指向在一个函数上下文中,由调用者提供,由调用函数的方式来决定。如果函数独立调用,那么该函数内部的,则指向。但是在非严格模式中,当指向时,它会被自动指向全局对象。

原文全文传送门

我写这篇文章主要学习我不知道的独立调用时this的指向

this的指向,是在函数被调用的时候确定的,也就是执行上下文被创建时确定的。

(1)简单的指向全局

(2)函数中的this指向

在一个函数上下文中,this由调用者提供,由调用函数的方式来决定。如果函数独立调用,那么该函数内部的this,则指向undefined。但是在非严格模式中,当this指向undefined时,它会被自动指向全局对象。

var a = 20;
var obj = {
    a: 10,
    c: this.a + 20,
    fn: function () {
        return this.a;
    }
}

console.log(obj.c); //独立调用 非严格模式指向全局 40
console.log(obj.fn()); //对象调用 指向对象 10

当obj在全局声明时,无论obj.c在什么地方调用,这里的this都指向全局对象,而当obj在函数环境中声明时,这个this指向undefined,在非严格模式下,会自动转向全局对象。

var a = 20;
var foo = {
    a: 10,
    getA: function () {
        return this.a;
    }
}
console.log(foo.getA()); //非独立调用 10

var test = foo.getA;
console.log(test());  //独立调用 20

(3)用call或者apply显式更改this

(4)构造函数new对象this

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88132.html

相关文章

  • 前端必懂之熟悉又陌生的BFC

    写在最前:BFC看起来是个很陌生的概念但它却时时发生在我们工作中,如何清除浮动影响?如何避免margin穿透问题?如何编写两栏自适应布局?都和BFC有这密不可分的关系,下面走进切图妞的世界,分分钟搞定BFC! 一、什么是BFC? BFC概念 块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素...

    Dongjie_Liu 评论0 收藏0
  • 前端必懂之熟悉又陌生的BFC

    写在最前:BFC看起来是个很陌生的概念但它却时时发生在我们工作中,如何清除浮动影响?如何避免margin穿透问题?如何编写两栏自适应布局?都和BFC有这密不可分的关系,下面走进切图妞的世界,分分钟搞定BFC! 一、什么是BFC? BFC概念 块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素...

    philadelphia 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<