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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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 在fat箭头中显示此上下文_Javascript_Typescript_Ecmascript 6 - Fatal编程技术网

Javascript 在fat箭头中显示此上下文

Javascript 在fat箭头中显示此上下文,javascript,typescript,ecmascript-6,Javascript,Typescript,Ecmascript 6,举个例子可以更好地说明我的问题 let obj = { columns: [ { column: name }, { column: name }, { column: name }, { column: name }, { column: name } ], someFunc: () => { this.somePublicFunc(this.columns[0])

举个例子可以更好地说明我的问题

let obj = { 
    columns: [
        { column: name },
        { column: name },
        { column: name },
        { column: name },
        { column: name }
    ],
    someFunc: () => {
        this.somePublicFunc(this.columns[0])
    }
}
使用常规函数()时,this.columns将指向obj.columns。在fat arrow函数中是否有方法访问此范围内的函数

    someFunc: function() {
        this.somePublicFunc(this.columns[0])
    }
或者,我可以在非胖箭头函数中调用公共函数吗

    someFunc: function() {
        this.somePublicFunc(this.columns[0])
    }
编辑:我知道我可以访问obj.columns,但我正在寻找其他选项,因为这不是实际代码中最优雅的选项


编辑:这是将所有公共方法快速更改为箭头函数的结果。我甚至从未想过要将问题方法更改为传统的非胖箭头函数。问题解决了,自我挫伤。

请记住,箭头函数根据声明函数时的当前
this
确定其
this
,而不是基于其在对象中的位置

在上面的代码中,假设它是全局运行的,当函数
someFunc
被声明时,
this
指针将在浏览器中的
window
和节点中的
global
中,这将是arrow函数内部的
this
指针


通常,使用传统的函数声明可以解决您的问题,除非
被其他内容更改。

请记住,箭头函数在声明函数时根据当前的
确定其
,而不是基于其在对象中的位置

在上面的代码中,假设它是全局运行的,当函数
someFunc
被声明时,
this
指针将在浏览器中的
window
和节点中的
global
中,这将是arrow函数内部的
this
指针


通常,使用传统的函数声明可以解决您的问题,除非
this
被其他内容更改。

在普通JavaScript中,this.columns会指向obj.columns
不,它不会。Typescript arrow函数的工作原理与Javascript arrow函数相同。
当然可以在非胖arrow函数中调用公共函数。为什么不行?SLaks是对的。TypeScript只是JS的上标。你可以整天用TS写JS。有效的JS就是有效的TS。我知道TypeScript是JS的超集。如果您查看两个someFunc示例,您将看到一个是胖箭头,另一个是正则函数。这表明这两个方面都不同。我的问题是如何从同一个函数中访问这两个函数。此外,vanilla是一个错误的词,但在下面的常规函数中,this.columns确实指向obj.columns。删除了TypeScript引用。“有没有办法用箭头函数实现这一点?”-没有。箭头函数不能用作方法。
在vanilla JavaScript中,this.columns会指向obj.columns
没有。Typescript arrow函数的工作原理与Javascript arrow函数相同。
当然可以在非胖arrow函数中调用公共函数。为什么不行?SLaks是对的。TypeScript只是JS的上标。你可以整天用TS写JS。有效的JS就是有效的TS。我知道TypeScript是JS的超集。如果您查看两个someFunc示例,您将看到一个是胖箭头,另一个是正则函数。这表明这两个方面都不同。我的问题是如何从同一个函数中访问这两个函数。此外,vanilla是一个错误的词,但在下面的常规函数中,this.columns确实指向obj.columns。删除了TypeScript引用。“有办法使用箭头函数吗?”-没有。箭头函数不能用作方法。我想使用传统的函数声明,即代码当前的状态,但我不确定如何访问公共函数。您可以通过以下对象访问它:
obj.someFunc()
担心这就是答案,所以在发布此消息之前就开始了这条路径。不幸的是,实际的代码没有我的示例那么简单。我想使用传统的函数声明,即代码当前的状态,但我不确定如何访问公共函数。您可以通过对象访问它,如下所示:
obj.someFunc()
担心这就是答案,所以在发布此消息之前就开始了这条路径。不幸的是,实际的代码没有我的示例那么简单。