解决函数内this指向

  1. 可以在函数外提前声明变量 _this/that=this
  2. 通过applycall 来修改函数内的this指向

(1) 二者区别 用法是一样的,就是参数形式不一样  fn.call(obj,a,b)/fn.apply(obj,[a,b])

(2) 二者代表的是将函数内的this换成obj之后然后把fn调用

  1. bind修改函数内的this

Fn.bind(obj,a,b) 只是替换了this但是不调用fn,返回的还是函数

Fn.bind(obj,a,b)()

相当于写成

为什么用了call之后里面的names还是张三不是李四??

fn.call(obj) fn继承obj中的所有属性,只要是继承的可以看成是公有的,天生自带的是私有的,在使用的时候,私有的有就不会找公有的。

原文地址:https://www.cnblogs.com/txf-123/p/10154138.html