在 Javascript 中正确使用 "call" 来访问对象属性

Using "call" properly in Javascript to access object properties

我是 Javascript 的新手,尽管已经阅读了几个在线主题和教程,但我无法在此示例中正确使用“调用”来访问对象的 属性

我知道问题是当“b()”被调用时,“this”是全局对象,我必须使用call(或apply)方法来确保当“b”被调用时this设置为对象本身,但我找不到错误。

我知道箭头函数存在,并且可能还有其他方法,但我想了解使用 call 有什么问题。谢谢。

密码是

class Letter {
     constructor() {let a = "a";}
     b() {alert (this.a);} //can't access a. Prints "undefined"
     c() {this.b.call(this);}
}
let p = new Letter ();
p.c();

a 不作为对象的 属性 存在 - 它是一个 变量 ,一个在构造函数中可见的标识符,而不是一个实例在对象上。

没有很好的方法来访问在另一个范围内声明的变量。对于您要实现的目标,请将 a 定义为实例的 属性。

constructor() {
  this.a = 'a';
}

您根本不需要 .call - 只需 this.b()