this.name = 'Ben'
function greet(greeting, punctuation) {
  console.log(`${greeting}, ${this.name}${punctuation}`);
}

const person = { name: 'Alice' };
// 使用 call 调用函数,并将 person 作为 this 值
greet.call(person, 'Hello', '!');
greet.call(null, 'Hello', '!');

输出:

Hello, Alice!

Hello, undefined!

node 环境下换成 globalThis

globalThis.name = 'Ben'
function greet(greeting, punctuation) {
  console.log(`${greeting}, ${this.name}${punctuation}`);
}

const person = { name: 'Alice' };
// 使用 call 调用函数,并将 person 作为 this 值
greet.call(person, 'Hello', '!');
greet.call(null, 'Hello', '!');

输出:

Hello, Alice!

Hello, Ben!