3

快速提问 - 如何访问“以上两层”属性?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
        }
    }
}
4

1 回答 1

5

如果您使用粗箭头语法,它将保留您的词法范围:

export class Test {
    testVariable: string;
    constructor() { }

    TestFunction() {
        var MyFunctions = {
            Proxy: {
                Join: function() {}
            }
        };

        MyFunctions.Proxy.Join = () => {
            alert(this.testVariable);
        }
    }
}
于 2013-11-14T16:58:10.937 回答