我如何才能访问;这";在Typescript中使用与我在Javascript中使用相同的方式?
在js中,我使用以下代码我如何才能访问;这";在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
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();