// 示例代码:理解 JavaScript 上下文 (this)
// 1. 全局上下文
function globalContext() {
console.log(this === window); // 在浏览器环境中,全局上下文指向 window 对象
}
globalContext();
// 2. 函数上下文
function functionContext() {
console.log(this); // 在非严格模式下,this 指向全局对象 (window),在严格模式下,this 是 undefined
}
functionContext();
// 3. 对象方法中的上下文
const obj = {
name: 'Alice',
greet: function() {
console.log(`Hello, my name is ${this.name}`); // this 指向调用 greet 方法的对象 (obj)
}
};
obj.greet();
// 4. 使用 bind、call 和 apply 改变上下文
function say Profession(profession) {
console.log(`I am a ${profession} and my name is ${this.name}`);
}
const person = { name: 'Bob' };
sayProfession.call(person, 'developer'); // 使用 call 改变 this 指向 person,并传递参数
sayProfession.apply(person, ['designer']); // 使用 apply 改变 this 指向 person,并传递参数数组
const boundSayProfession = sayProfession.bind(person, 'teacher'); // 使用 bind 创建一个新函数,永久绑定 this 到 person
boundSayProfession();
this 指向全局对象(在浏览器中是 window)。this 默认指向全局对象(非严格模式),或 undefined(严格模式)。this 指向该对象。bind、call 和 apply 可以手动改变函数内部的 this 指向。上一篇:js change事件
下一篇:js format
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站