this = 运行函数的对象
。호출한 놈(객체)。누가 실행했냐
js的 function是obj
(js特殊性 函数可以存到变量)
const a = {
name: '',
}
如果一个obj里面有个函数,那不知道this指的是 obj 还是函数本身。
比如const a = obj.run
在这里 给a的run不会记住obj
。因为给的是 run的copy
为了解决这个模糊性 用bind。
호출하는것과 무관하게 this를 고정시키는 bind.
不管怎么运行函数, bind可以固定this
obj.run.bind()
bind 相当于 绑定 copy的函数跟原来的obj
。
class里的函数 每次要绑定
,这么麻烦所以 js不适合OOP。
react 从类组件换成函数组件也是这个原因(因为浏览器要js,所以把jsx改成js的时候class会很乱)
箭头arrow
function不用this
。 它可以通过closure闭包 可以拿函数上一层域scope的变量
一半的函数,箭头函数的区别 箭头函数没有this
js에서는 선언할때 결정되는 closure, 호출할때 결정되는 this
this = 호출한 객체
bind = 호출과 무관하게 this 고정시킬수 있는 함수