This 关键字你真的懂吗

287 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

This 关键字

this关键字是JavaScript中最复杂的机制之一。它是一个很特别的关键字,被自动定义在所有函数的作用域中。但是即使是非常有经验的JavaScript开发者也很难说清它到底指向什么。

实际上,JavaScript中this的机制并没有那么先进,但是开发者往往会把理解过程复杂化。毫不夸张地说,不理解它的含义,大部分开发任务都无法完成。

this都有一个共同点,它总是返回一个对象。简单说,this就是属性或方法“当前”所在的对象。

This的基本用法一:

//定义一个全局变量v
var v= 100;
// this经常被定义在函数的作用域中
function fn() {
    // this总是要返回一个对象
    console.log(this.v); //this 指向哪个对象,不取决于函数定义的位置。
}
// this 指向哪个对象,取决于调用的位置
fn();//函数的调用

解析如下:

this的基本用法

This的基本用法二:

//定义一个全局变量v
var v= 100;
// this经常被定义在函数的作用域中
function fn() {
    // this总是要返回一个对象
    console.log(this.v); //this 指向哪个对象,不取决于函数定义的位置。
}

// 定义一个对象,将fn函数作为obj对象的方法
var obj = {
    v:200,
    f:fn
}
obj.f();//200

解析图如下:

this的基本用法二