在下面的代码中,"This"关键字引用了"myName"对象.为什么sole.log中的"this"不引用"Window"对象,因为它实际上是"window.console.log"?

class Name {
  constructor(firstName) {
    this.firstName = firstName;
  }
  superGreet() {
    console.log('I am', this.firstName);
  }
}
 
let myName = new Name("Jay");
myName.superGreet();

推荐答案

参数在调用方的作用域中计算,而不是在被调用函数的作用域中计算.所以

  superGreet() {
    console.log('I am', this.firstName);
  }

相当于

  superGreet() {
    let temp = this.firstName;
    console.log('I am', temp);
  }

在这次重写中,您可以看到thismyName.superGreet()的范围内,而不是window.console.log().所以thismyName的值.

Javascript相关问答推荐

如何在使用fast-xml-parser构建ML时包括属性值?

TypeScript索引签名模板限制

在nextjs服务器端api调用中传递认证凭证

构造HTML表单以使用表单数据创建对象数组

Next.js服务器端组件请求,如何发送我的cookie token?

try 使用javascript隐藏下拉 Select

JQuery Click事件不适用于动态创建的按钮

如何使用JavaScript拆分带空格的单词

如何将数据块添加到d3力有向图中?

如何在我的Next.js项目中.blob()我的图像文件?

SPAN不会在点击时关闭模式,尽管它们可以发送日志(log)等

当代码另有说明时,随机放置的圆圈有时会从画布上消失

Docent.cloneNode(TRUE)不克隆用户输入

JWT Cookie安全性

ReferenceError:无法在初始化之前访问setData

按特定顺序将4个数组组合在一起,按ID分组

Chart.js Hover线条在鼠标离开时不会消失

在将元素追加到DOM之前,createElement()是否会触发回流?混淆abt DocumentFragment行为

将字符串解释为数字;将其重新编码为另一个基数

需要从对象生成列表