Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

js 上下文

作者:冷宸枫   发布日期:2026-06-12   浏览:101

// 示例代码:理解 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();

解释说明:

  1. 全局上下文:当在全局作用域中执行代码时,this 指向全局对象(在浏览器中是 window)。
  2. 函数上下文:普通函数的 this 默认指向全局对象(非严格模式),或 undefined(严格模式)。
  3. 对象方法中的上下文:当方法作为对象的属性被调用时,this 指向该对象。
  4. 改变上下文:通过 bindcallapply 可以手动改变函数内部的 this 指向。

上一篇:js change事件

下一篇:js format

大家都在看

js 数组打乱顺序

js 两个数组取交集

js 数组对象排序

js 对象数组排序

js 数组删掉第一个值

js fill

js fill方法

js 数组连接

js json数组

js 数组复制

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站