5,this

作者: r8HZGEmq | 来源:发表于2020-08-07 18:25 被阅读0次
1,隐式绑定,注意特定情况,丢失对象的问题。
只要记住:1,最终调的是谁fn     2,这个fn在哪里
obj.foo()  打印this.a a在obj,或者window也有一个

2,显示 apply call bind硬绑定,使用指定的this
myArray.forEach( foo, obj );  依次传参arr的元素,然后分别都绑定obj

3,new绑定
手写一个new
var obj = new Object();
Con = [].shift.call(arguments); 取出第一个参数,即: 构造函数
obj.__proto__ = Con.prototype;  使obj的原型能访问构造函数原型中的属性
var ret = Con.apply(obj, arguments);  使obj的能访问构造函数中的属性
return ret instanceof Object ? ret : obj;

优先级
new > 显 > 隐 > 默认
currying提前设置一些参数

Object.create(null) 没有委托
{} 有委托propetype

var name = 'window'

var person1 = {
  name: 'person1',
  show1: function () {
    console.log(this.name)
  },
  show2: () => console.log(this.name),
  show3: function () {
    return function () {
      console.log(this.name)
    }
  },
  show4: function () {
    return () => console.log(this.name)
  }
}
var person2 = { name: 'person2' }


//var personA = new Person('personA')
//var personB = new Person('personB')
//personA.show1()

person1.show1() // 隐式绑定 person1
person1.show1.call(person2) // 显示绑定 person2

person1.show2() // window 箭头绑定,指向外层作用域
person1.show2.call(person2) // window 箭 指 外层

person1.show3()() // 外层调用window,类似fn=person1.show3() fn()
person1.show3().call(person2)// fn=person1.show3()  fn.call(person2)
person1.show3.call(person2)() // window默认绑定fn(return fn).call(person2

person1.show4()() // 箭指外层域,person1
person1.show4().call(person2) // 箭指外层作用域,person1
person1.show4.call(person2)()// fn=...call(person2), fn()外层是person2

相关文章

  • 灵心儿组计分

    9.24 棉芯➕5➕5 晨萌➕5 乐乐➕5➕5➕5➕5 楠楠➕5➕5➕5➕5 水儿➕5➕5 七炫➕5➕5➕5➕5

  • 未闻花名口琴简谱

    1 4 5 5 6 6 6 6 6 6 5 5 5 5 5 5 4 4 4 4 4 4 4 1 1 1 4 5 5...

  • 5/5

    该地区最重要的科技增长毫无疑问是半导体产品。在新泽西州Bell实验室里,William曾是晶体管发明人之一,195...

  • 5/5

    我允许自己表达疲惫,允许自己懒懒前行,允许自己自然而然……感觉到放松,感觉到对自我的接纳,自己理解自己,直面自己,...

  • 5、5

    しょんぼり [寂しく]孤零零(地);[がっくり]垂气(成),无精打采(成) ¶~立っている/无精打采地站着 ¶彼は...

  • 5 .5

    今天去的晚了一点,然后男队那边早早就开始在训练了,但是女队现在还在慢悠悠的走,有十多分钟,这种学生投入性低,缺...

  • 5/5

    五一后第一天上课,虽然起晚了一点,不过语文课还是听上了。数学老师的课就是摸鱼,老师讲评了五一的卷子,真的超难!我原...

  • 托姆拉物语暴力火线技能树

    剑术:战吼5+5+10 射击:弱狙5+5+10 火线5+10 要领10 分身5+5+10 魔法:冲击波5+5+5+...

  • 密码

    1【5】1 云1 2【5】2 云2 3【5】3 云3 4【5】4 云4 5【5】5 云5 《2.0》 公告 6【5...

  • 20171109

    5:00-5:10 洗漱 V 5:10-5:40 晨间日记 V 5:40-5:50 反思昨天 V 5:50-5: ...

网友评论

      本文标题:5,this

      本文链接:https://www.haomeiwen.com/subject/lnzfdktx.html