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

时间:2018-10-31 15:50:19

标签: javascript oop methods

我是Java的新手。我看过这样的代码:

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

  handleInputChange(event) {...}
}

据我所知,handleInputChange不是方法,而是独立的函数,bind使其行为更像方法。有人可以解释一下幕后发生的事情吗?是这样吗?

  1. 在创建Reservation对象时,handleInputChange绑定到一个新的lambda。
  2. 然后,构造函数中的代码将其重新绑定到一些函数对象,该对象包装/修改了lambda并在其中绑定了this

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

1 个答案:

答案 0 :(得分:1)

  

handleInputChange不是方法,而是独立函数

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

  

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

在这种情况下,即使它被复制到其他地方(例如,用someInput.addEventListener('change', this.handleInputChange))并以不同的方式调用,也会使其像被称为对象的方法一样起作用。上下文。

  

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

否。

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

…即使没有重新绑定也可以正常工作。