我是Java的新手。我看过这样的代码:
class Reservation extends React.Component {
constructor(props) {
super(props);
this.handleInputChange = this.handleInputChange.bind(this);
}
handleInputChange(event) {...}
}
据我所知,handleInputChange
不是方法,而是独立的函数,bind
使其行为更像方法。有人可以解释一下幕后发生的事情吗?是这样吗?
Reservation
对象时,handleInputChange
绑定到一个新的lambda。this
。 这是在JavaScript中创建方法的唯一方法吗?
答案 0 :(得分:1)
handleInputChange不是方法,而是独立函数
方法只是作为对象属性存储的函数。
绑定使它的行为更像一种方法。
在这种情况下,即使它被复制到其他地方(例如,用someInput.addEventListener('change', this.handleInputChange)
)并以不同的方式调用,也会使其像被称为对象的方法一样起作用。上下文。
这是在JavaScript中创建方法的唯一方法吗?
否。
const foo = new Reservation
foo.handleInputChange(...)
…即使没有重新绑定也可以正常工作。