代码之家  ›  专栏  ›  技术社区  ›  Mohan

Javascript中的模拟方法-它们是如何工作的?

  •  0
  • Mohan  · 技术社区  · 7 年前

    我是Javascript新手。我见过这样的代码:

    class Reservation extends React.Component {
      constructor(props) {
        super(props);
        this.handleInputChange = this.handleInputChange.bind(this);
      }
    
      handleInputChange(event) {...}
    }
    

    据我搜索所知, handleInputChange 不是一个方法,而是一个独立的函数,并且 bind 使其行为更像一种方法。有人能再解释一下引擎盖下面发生的事吗?是这样的吗?

    1. 论创造 Reservation 对象, 手动变速器 是一只新鲜的羔羊。
    2. 然后,构造函数中的代码将其重新绑定到某个函数对象,该函数对象包装/修改lambda并绑定 this 在里面。

    这是用JavaScript创建方法的唯一方法吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Quentin    7 年前

    handleInputChange不是一个方法,而是一个独立的函数

    方法只是存储为对象属性的函数。

    绑定使其行为更像一种方法。

    在这种情况下,它将使其看起来像是作为对象的方法调用的 即使是在别的地方复制的 (例如 someInput.addEventListener('change', this.handleInputChange) )在不同的环境中调用。

    这是用JavaScript创建方法的唯一方法吗?

    不。

    const foo = new Reservation
    foo.handleInputChange(...)
    

    即使没有重新绑定也能正常工作。