Javascript *此*对象在React组件中为“未定义”

Javascript *此*对象在React组件中为“未定义”,javascript,reactjs,Javascript,Reactjs,我正在尝试为我的React项目构建一个实用功能,它将在React组件中用于管理一些行为 在开发过程中,我发现函数中的对象(不是React组件)返回未定义。我会使用关键字this,因为我会链接函数fn1.fn2.fn3,为那些想要使用我的函数的人创建一种声明式体验 如何重现这种行为 使用包Create React app创建新的React项目 创建一个新的JS文件,选择您想要的名称 在新的JS文件中编写如下新函数: function foo() { console.log(this) } 在

我正在尝试为我的React项目构建一个实用功能,它将在React组件中用于管理一些行为

在开发过程中,我发现函数中的对象(不是React组件)返回未定义。我会使用关键字this,因为我会链接函数fn1.fn2.fn3,为那些想要使用我的函数的人创建一种声明式体验

如何重现这种行为

使用包Create React app创建新的React项目

创建一个新的JS文件,选择您想要的名称

在新的JS文件中编写如下新函数:

function foo() {
  console.log(this)
}
在任意位置调用函数:在React组件内部或外部。例如index.js

import React, { Component } from "react";
import { foo } from "../../../validation/test";
import "./App.css";

class App extends Component {
  constructor(props) {
    super(props);

    this.state = {};
  }

  render() {
    foo();

    return <h1>Hello Stack Overflow Community....</h1>;
  }
}

export default App;
看看浏览器控制台

我在一个节点环境中进行了尝试,但我没有遇到这个问题


原因可能是什么?

您是否尝试了foo.bindthis而不是foo?通过这种方式,它为您的函数提供了上下文,这将引用从中调用函数的类。

现在,经过进一步的研究和阅读,我想我能够回答我自己的问题了

为什么在我的问题中提到的案例中这一点没有定义

关键字this始终是对对象的引用。然而,在我的例子中,我没有执行任何必要的操作来将关键字this作为对函数对象的引用,我只执行了函数foo

下图显示了该关键字的值:

然后,取而代之的是:

我创建了一个foo对象的实例,请参见下图中的红色箭头 我在React组件中执行了foo对象的foo2函数实例,正如预期的那样,关键字this现在被引用到函数对象,我将能够进行方法链接。 如对我的答案有任何整合或更正,将不胜感激


感谢所有撰稿人。

请编辑此问题,并添加代码示例。谢谢您的回复。但是社区需要哪种类型的代码示例?我解释了如何重现这种行为。。。。但好的,我会编辑我的问题…foo不是这个类的一部分,所以它在全局范围内。关于否决票的元评论或你对其他人动机的猜测不属于这个问题。我把它们删掉了。如果您对您的问题或堆栈溢出有任何疑问,请在Ok@hereticsmonkey上提问。谢谢