javascript - 为什么我们能够在 React 组件的构造函数中绑定(bind)函数?

标签 javascript reactjs ecmascript-6

我们听说当一个类组件被初始化时,构造函数是第一个被调用的函数,然后在构造函数中我们如何能够访问并绑定(bind)到类中稍后定义的函数 即问,为什么我们能够在构造函数内部访问 this.fn?

import React from 'react';
class A extends React.Component {
  constructor(props){
    super(props);
    this.a = 1;
    this.fn = this.fn.bind(this);
  }
  fn(){
    console.log(this.a);
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

最佳答案

class 声明本身是构造函数声明和构造函数原型(prototype)对象初始化的“漂亮”包装器。 (还有一些其他功能,但就我们的目的而言,就是这样。)

因此 class 代码本身代表可执行代码,而不仅仅是静态声明。因此,原型(prototype)对象在实际调用构造函数之前被初始化。当调用构造函数时,原型(prototype)属性(如您的 fn() 方法)就可以使用了。

关于javascript - 为什么我们能够在 React 组件的构造函数中绑定(bind)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54724559/

相关文章:

javascript - sinon.js 对 websocket 应用程序进行单元测试

javascript - 在 laravel 中使用 ajax 发送消息而无需重新加载页面

javascript - 使用 Gulp-babel 并获取 "Argument name clash in strict mode"

javascript - 是否可以使用 Canvas 制作渐变透明/图层蒙版图像?

javascript - 使用 Context API 给我未定义的信息

reactjs - 使用 requireJS 将脚本类型更改为 "text/babel"

javascript - 如何在 ReactJS JSX 中执行嵌套的 if else 语句?

reactjs - Mocha 无法识别 JSX

javascript - 我真的需要在 javascript ES6 类中使用 setter/getter 吗?

javascript - DrawImage() 不在 Canvas 上绘制