目录
this是上下文执行程序时,系统直接传过来的一个隐式参数。可以理解为tthis指的是函数运行时所在的"环境",所以我们要找到this的指向就是看函数在什么环境下运行出来的。
1.全局上下文中的 this
:
- 在全局作用域中,浏览器环境下的
this
指向全局对象window
,而在 Node.js 环境下指向global
对象。
console.log(this);//Window
- 但在严格模式下,全局上下文中的
this
是undefined
。,在实际运行时根据js引擎的不同,展示的效果也不同,谷歌的v8引擎和ie的猴系列引擎在严格模式下,全文的上下文输出是window.
'use strict';
console.log(this); // window (理论应该输出undefined)
2.函数中的 this
:
当函数以普通函数(包括自执行函数)形式调用时,this指向全局对象window。
//普通函数
function showThis() {
console.log(this);
}
showThis(); // 输出: Window
//自执行函数
(function() {
console.log(this); // 在浏览器中通常指向全局对象(比如 window)
})();
当函数以普通函数(包括自执行函数)形式调用时,this
指向全局对象或 undefined
(在严格模式下)。
//严格模式下
'use strict';
// 普通函数
function showThis() {
console.log(this);