我有num1: number
,然后
constructor(){
...
this.num1 = 0;
}
在班级里。
但是当登录到函数console.log(this.num1)
或console.log(typeof this.num1)
中时,两次都得到 undefined 。
为什么在这里未定义我的变量的值?
答案 0 :(得分:0)
正如其他人在评论中提到的那样,可能的罪魁祸首是this
不是您期望的功能。
如果您有这样的课程:
class Foo {
public myValue: number;
constructor() { this.myValue = 0; }
barOne() { console.log(this.myValue); }
barTwo = () => { console.log(this.myValue); }
}
barOne
和barTwo
在类外部实体用作屁股回调时的行为会有所不同。
使用类实例方法作为按钮的回调时就是这种情况,就像您的情况一样。
深入研究this
在javascript和打字稿中的工作方式很有用(如果有ecmascript 6,则javascript与打字稿的行为相同),并且有很多关于它的好文章。
但是简单的解决方案是使用“箭头函数”,这与我上面的barTwo
方法一样。