打字稿:如何访问“以上两级”属性

时间:2013-11-14 14:32:29

标签: javascript typescript

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

1 个答案:

答案 0 :(得分:5)

如果使用fat-arrow语法,它将保留您的词法范围:

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

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

        MyFunctions.Proxy.Join = () => {
            alert(this.testVariable);
        }
    }
}