快速提问 - 如何访问“以上两级”属性? TypeScript中的测试示例:
export class Test {
testVariable: string;
constructor() { }
TestFunction() {
MyFunctions.Proxy.Join() { //some made up function from other module
//HERE
//How can I here access testVariable property of Test class?
}
}
}
或者甚至可以在TypeScript(或一般的JavaScript)中访问这样的属性吗?
编辑+回答:由于我的问题不够明确,我带来了一些关于这个问题的新信息。 通过启动程序员这是一个非常常见的问题。
这里的问题是this
改变了它的上下文 - 首先它引用了类Test,然后引用了我的内部函数 - Join()
。为了达到正确性,我们必须使用lambda表达式进行内部函数调用,或者为this
使用一些替换值。
第一个解决方案在接受的答案中。
其次是:
export class Test {
testVariable: string;
constructor() { }
TestFunction() {
var myClassTest: Test = this;
MyFunctions.Proxy.Join() { //some made up function from other module
myClassTest.testVariable; //approaching my class propery in inner function through substitute variable
}
}
}
答案 0 :(得分:5)
如果使用fat-arrow语法,它将保留您的词法范围:
export class Test {
testVariable: string;
constructor() { }
TestFunction() {
var MyFunctions = {
Proxy: {
Join: function() {}
}
};
MyFunctions.Proxy.Join = () => {
alert(this.testVariable);
}
}
}