this

steyu·2022년 10월 29일
0

this?

this = 运行函数的对象。호출한 놈(객체)。누가 실행했냐

js函数的问题

js的 function是obj(js特殊性 函数可以存到变量)

const a = {
  name: '',
  
}

如果一个obj里面有个函数,那不知道this指的是 obj 还是函数本身。
比如const a = obj.run
在这里 给a的run不会记住obj。因为给的是 run的copy

bind 解决

为了解决这个模糊性 用bind。
호출하는것과 무관하게 this를 고정시키는 bind.
不管怎么运行函数, bind可以固定this
obj.run.bind()
bind 相当于 绑定 copy的函数跟原来的obj

class, function

class里的函数 每次要绑定,这么麻烦所以 js不适合OOP。
react 从类组件换成函数组件也是这个原因(因为浏览器要js,所以把jsx改成js的时候class会很乱)

箭头arrow function不用this。 它可以通过closure闭包 可以拿函数上一层域scope的变量

일반함수, 화살표함수 차이

一半的函数,箭头函数的区别 箭头函数没有this

정리

js에서는 선언할때 결정되는 closure, 호출할때 결정되는 this
this = 호출한 객체
bind = 호출과 무관하게 this 고정시킬수 있는 함수

0개의 댓글