在 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()
。
我是 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()
。