Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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
我如何才能访问;这";在Typescript中使用与我在Javascript中使用相同的方式?_Javascript_Typescript - Fatal编程技术网

我如何才能访问;这";在Typescript中使用与我在Javascript中使用相同的方式?

我如何才能访问;这";在Typescript中使用与我在Javascript中使用相同的方式?,javascript,typescript,Javascript,Typescript,在js中,我使用以下代码 function m() { console.log(this) } m() 这将返回当前上下文 但在ts中,我使用以下代码,返回未定义 function m() { // @ts-ignore console.log(this) } m() 我希望在typescript中使用这个获取当前上下文,怎么做?这是因为默认情况下在typescript中使用了“use strict” 如果在js中尝试此操作,将返回相同的未定义 'use strict

在js中,我使用以下代码

function m() {
  console.log(this)
}

m()
这将返回当前上下文

但在ts中,我使用以下代码,返回未定义

function m() {
    // @ts-ignore
    console.log(this)
}

m()

我希望在typescript中使用这个获取当前上下文,怎么做?

这是因为默认情况下在typescript中使用了“use strict”

如果在js中尝试此操作,将返回相同的未定义

'use strict';

function m() {
  console.log(this)
}

m()

问题是,当您使用TS时,您是在严格模式下运行的,并且在严格模式下,
此函数的
未定义

因此,对于严格模式函数,不将其装箱到 对象,如果未指定,则该对象将未定义:


就像其他答案告诉你的那样,这是因为typescript的
使用严格的
。为了能够拥有
上下文,您可以(但不应该)使用
new
关键字

你可以这样试试

const that = this;

function m() {
  console.log(that);
}

m();

可能还想阅读相关内容(也是一个可能的解决方案):任何像样的JavaScript开发人员在切换到TypeScript之前都是在严格模式下运行的,除非他们有明确的理由不这样做。或者在编译器选项中将
“alwaysStrict”
设置为false。
const that = this;

function m() {
  console.log(that);
}

m();