Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用「;这";在typescript类中_Javascript_Typescript - Fatal编程技术网

Javascript 使用「;这";在typescript类中

Javascript 使用「;这";在typescript类中,javascript,typescript,Javascript,Typescript,我正在对与dataContext相关的typescripts类进行重构。问题是昨天我花了很多时间试图弄明白为什么我没有从我的新datacontext中得到微风。最后我得到了解决方案,它与“这个”的范围有关。 “this”的错误用法示例: 现在,相同的代码工作正常,但使用“that”作为临时变量: public getSomething(){ var that=this; return this.manager.executeQuery(query) .then(funct

我正在对与dataContext相关的typescripts类进行重构。问题是昨天我花了很多时间试图弄明白为什么我没有从我的新datacontext中得到微风。最后我得到了解决方案,它与“这个”的范围有关。 “this”的错误用法示例:

现在,相同的代码工作正常,但使用“that”作为临时变量:

public getSomething(){
  var that=this;
  return this.manager.executeQuery(query)
        .then(function (data) {               
            that.log('get something is complete');
        }
}
如果您在abore中看到,第二段代码工作正常,但是我必须对类中的每个方法重复这个过程。现在我的问题是: 如何在类级别创建“that”变量?可能吗

我尝试了下面的代码,但我得到了一个编译错误:“找不到符号‘that’。”


你知道如何把这个新变量“that”放在类级别吗?谢谢大家!

TypeScript有一个方便的快捷方式来解决这个问题,叫做“胖箭头语法”
=>

如果您使用以下功能,它应该适用于您:

getSomething(){
  return this.manager.executeQuery(query)
        .then((data) => {               
            this.log('This *will* now be logged :)');
        });
}

快速免责声明-我不确定您的
查询
来自哪里-它没有传递到
getSomething
方法中。如果它是一个类属性,请使用
this.query

是一个很好的readbind,因此技巧谢谢@SteveFenton给了我一个简短明确的答案!
 export class eventDataContext extends dataContextBase.dataContextBase {
    public that;

    constructor() {        
      super();
      that = this;
    ...
    }
 }
getSomething(){
  return this.manager.executeQuery(query)
        .then((data) => {               
            this.log('This *will* now be logged :)');
        });
}