JavaScript中this关键字如何详细解析?

更新于
2026-10-02 15:00:03
0阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1452个文字,预计阅读时间需要6分钟。

javascriptthis 的定义表示当前执行代码的环境对象。根据上下文,this 可以分为两种类型的对象:全局环境和函数环境。

全局环境:在浏览器中,全局环境通常是 window 对象。函数环境:在函数内部,this 指向函数的调用者。

示例代码:console.log(this===window); // truevar a=10;console.log(this.a); // 10

this 的定义

表示当前执行代码的环境对象

因此可将 this 的剖析分为“全局环境” 和 “函数环境” 两种类型的环境对象

全局环境

console.log(this === window); // true var a = 10; console.log(this.a); // 10

函数环境

在函数内部,this 的取值取决于函数被调用时的运行环境。

这里涉及到内存里的数据结构相关的知识点,当我们定义以下字面量对象时会发生一系列的关联关系

var obj = { name: 'Tom' };

javascript 引擎会先在内存中生成 { name: 'Tom'} 对象,接着再把这个对象的内存地址赋值给 obj 变量,所以obj 变量保存的只是一个内存地址而已,如果要获取 obj.name,javascript 引擎会先从 obj 变量中拿到内存地址,然后从该地址中获取原始对象,再返回 name 属性。

而属性值为函数时,该函数会被保存在内存中,然后将该内存地址赋值给该属性,因此该地址赋值给不同环境执行时它的作用域是不一样的,而 this 对象就是指向函数当前的执行环境对象,执行环境是会在 Event Loop(事件循环)过程中变化的,因此 this 在函数环境下是属于运行时的。

阅读全文

本文共计1452个文字,预计阅读时间需要6分钟。

javascriptthis 的定义表示当前执行代码的环境对象。根据上下文,this 可以分为两种类型的对象:全局环境和函数环境。

全局环境:在浏览器中,全局环境通常是 window 对象。函数环境:在函数内部,this 指向函数的调用者。

示例代码:console.log(this===window); // truevar a=10;console.log(this.a); // 10

this 的定义

表示当前执行代码的环境对象

因此可将 this 的剖析分为“全局环境” 和 “函数环境” 两种类型的环境对象

全局环境

console.log(this === window); // true var a = 10; console.log(this.a); // 10

函数环境

在函数内部,this 的取值取决于函数被调用时的运行环境。

这里涉及到内存里的数据结构相关的知识点,当我们定义以下字面量对象时会发生一系列的关联关系

var obj = { name: 'Tom' };

javascript 引擎会先在内存中生成 { name: 'Tom'} 对象,接着再把这个对象的内存地址赋值给 obj 变量,所以obj 变量保存的只是一个内存地址而已,如果要获取 obj.name,javascript 引擎会先从 obj 变量中拿到内存地址,然后从该地址中获取原始对象,再返回 name 属性。

而属性值为函数时,该函数会被保存在内存中,然后将该内存地址赋值给该属性,因此该地址赋值给不同环境执行时它的作用域是不一样的,而 this 对象就是指向函数当前的执行环境对象,执行环境是会在 Event Loop(事件循环)过程中变化的,因此 this 在函数环境下是属于运行时的。

阅读全文