【问题标题】:How can you use the 'this' keyword inside of a function signature to set a default parameter?如何在函数签名中使用“this”关键字来设置默认参数?
【发布时间】:2017-07-12 10:33:53
【问题描述】:

我有一个绑定到 React 组件的函数:

    functionName(param1, param2 = this.state.field) {

    }

我从未听说过在 Javascript 的函数签名中使用“this”关键字,我想知道“this”的上下文是包含对象还是全局范围。在我可以在签名中正确使用“this”之前,是否需要将此函数绑定到正确的上下文?

【问题讨论】:

  • 您想将this 上下文绑定到什么?组件?功能?全局对象?
  • 什么都没有。我只是想确定函数签名中 this 的上下文是否是包含对象的上下文(函数本身绑定到的反应组件)

标签: javascript reactjs this bind method-signature


【解决方案1】:

我想知道“this”的上下文是包含对象还是全局范围。

两者都没有。默认值不在函数外部评估,而是inside the callthis 关键字将指向与方法主体中相同的值——调用的接收者。所以如果函数绑定到你的 react 组件,this 就是这样。

【讨论】:

  • 啊,有道理!我不知道默认值是在函数体内设置的。谢谢知识。所以我猜测如果函数没有绑定到任何东西,那么 this 的上下文将是包含对象......除非函数是嵌套的未绑定函数
【解决方案2】:

如果函数位于从 React 库扩展 React.Component 类的类中。 “this”关键字指的是当前对象在其类的上下文中。例如:

import React from 'react';
class example extends React.Component {
    this.state = {
        field: "this variable!"
    }
    functionName(param1, param2 = this.state.field) {
        console.log(param2);
    }   
}

如您所见,this.state 是示例类的一个属性,只是在第二个参数处调用,它将返回 this.state 对象的 field 属性的值。

如果您想知道它是否可行。嗯,JavaScript 是一种多范式语言,如果打算在函数范式中使用它,这绝对是可以接受的。

【讨论】:

  • 我不确定我是否同意任何使用“this”关键字被认为是功能性的。
猜你喜欢
  • 1970-01-01
  • 2018-04-26
  • 2017-10-25
  • 2019-02-06
  • 1970-01-01
  • 2015-01-08
  • 1970-01-01
  • 1970-01-01
  • 2019-08-25
相关资源
最近更新 更多