JavaScript中this的指向由调用方式决定而非定义位置:普通调用时非严格模式指向全局对象、严格模式为undefined;方法调用时指向调用对象;call/apply/bind可显式绑定;箭头函数无this,继承外层函数this。

JavaScript 中的 this 指向当前执行上下文的“所有者对象”,但它**不是定义时决定的,而是调用时决定的**。理解 this 的关键在于看函数**怎么被调用**,而不是怎么被声明。
普通函数调用(非严格模式 vs 严格模式)
直接调用函数(如 foo()),this 的值取决于是否启用严格模式:
- 非严格模式下,this 指向全局对象(浏览器中是
window,Node.js 中是global) - 严格模式下,this 是
undefined
例如:
function say() { console.log(this); }
say(); // 非严格:window;严格:undefined登录后复制
方法调用(对象.方法)
当函数作为对象的属性被调用时,this 指向该对象:
立即学习“Java免费学习笔记(深入)”;
const obj = {
name: 'Alice',
greet() { console.log(this.name); }
};
obj.greet(); // 'Alice' → this 指向 obj登录后复制
注意:一旦把方法单独提取出来,就变成普通调用,this 会丢失:
标签: javascript java js node.js node 浏览器 app win 作用域
还木有评论哦,快来抢沙发吧~