this是什么?(无敌版)

今天带大家观察一波this指向是什么!
总结起来就六个字 谁调用,指向谁
含义: 当一个函数没有明确的调用对象的时候, 也就是单纯作为独立函数调用的时候, 将对函数的this使用默认绑定: 绑定到全局的window对象
在显式绑定下: 函数将取得在“ 包含对象“ 里的永久居住权, 一直都会” 住在这里“

image.png

function fire() {
    console.log(this === window); //fire此时是全局的方法,this指向window
}
fire(); // 输出true
var a = 666;
console.log(this.a); //666 因为此时this指向了window,因而调用666
function fire() {
    var a = 2;
    console.log(this.a); //666 因为此时this指向了window,因而调用666

    function innerFire() {
        var a = 3;
        console.log(this.a); //666 因为此时this指向了window,因而调用666
    }
    innerFire();
}
fire(); //输出1
var a = 666;
console.log(a); //666 a在全局作用域
function fire() {
    var a = 777;
    console.log(a); //777 fire函数作用域
    function innerFire() {
        var a = 999;
        console.log(a); //999 此时打印输出a,a在innerFIre作用域。从自身作用域查找变量,未找到才往上查找
    }
    innerFire();
}
var obj = {
    b:2,
    fire: function () { //此时函数的this被隐式绑定到了对象obj
        console.log(this == obj); // obj中有fire函数,因而默认this指向obj
        console.log(this.b); // 2 this.a 相当于obj.b =2
    }
}
obj.fire(); // 输出2

全局环境作用域: this在全局环境始终指向window

var a = 1
function test () {
    console.log(this.a)
}
var obj = {
    a: 2,
    test
}
var obj0 = {
    a: 3,
    obj 
}
obj0.obj.test()//2,总是找他上一级的对象所以就是obj
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容