美文网首页
2018-01-10

2018-01-10

作者: ultimater | 来源:发表于2018-01-11 00:29 被阅读5次

你不知道的js上篇

  1. 关于this
    1. 为什么要用this,显式传递上下文对象会让代码变得越来越混乱,使用this更优雅的隐式传递一个对象的引用
    2. 误解指向自身和函数作用域,this既不是指向函数自身,也不指向函数的词法作用域,实际上是在函数被调用的时发生的绑定,它指向什么完全取决于函数在哪里被调用
  2. this全面解析
    1. 熟悉调用位置,浏览器的调试工具,打断点,了解调用栈的调用位置,或者使用代码"debugger" ('堆',先进先出,‘栈’,后进先出)
    2. 如果要判断一个运行中的函数的t就this绑定,就需要找到这个函数的直接调用位置,找到之后就可以优先级顺序来判断this的绑定对象
      1. new绑定,由new调用?绑定到新创建的对象
      2. 显式绑定,由call或者apply(或者bind)调用?绑定到指定的对象
      3. 隐式绑定,由上下文对象调用?绑定到那个上下文对象
      4. 默认绑定,在严格模式下绑定到undefined,否则绑定到全局对象
    3. 一定要注意,有些调用可能在无意中使用默认绑定规则,如果想“更安全”地忽略this地绑定,你可以使用一个DMZ(空对象),比如0 = Object.create(null),以保护全局对象
    4. ES6中的箭头函数并不会使用上面的四条规则,而是根据当前的词法作用域来决定this,具体会继承外层函数调用的this绑定,相当于ES6中的self = this;的机制

总结:以前只知道this,是谁调用的就指向谁,没成想还有这么多的绑定规则,这样在碰到问题查询this的指向,根据四个规则,安全不影响全局的方式,还由ES6的不同方式,能让心里有知其然,知其所以然

相关文章

  • 2018-01-10

    2018-01-10 禾隆李亮 2018-01-10 20:59 · 字数 270 · 阅读 4 · 日记本 【日...

  • 身体不会撒谎,缺什么营养一看便知,超全!太实用了!

    爱的传递13999006185 简书作者 2018.01.10 07:05 打开App 2018-01-10 丰盛...

  • Oracle to_date用法

    to_date('2018-01-10 09:30:00','yyyy-MM-dd HH24:mi:ss')

  • 富人思维

    忙,不值得炫耀 一只西城 关注 2018-01-10 05:21 · 字数 1618 · 阅读 15135 · 梦...

  • 亲子打卡第69天

    2018-01-10 Ashley彭 20180110 ❤️4组 彭钰博 学龄前 #从自己做起,给闺女树立榜样# ...

  • 2017总结书

    2017年总结书 童口口 2018-01-10 20:04 · 字数 574 · 阅读 3 · 日记本 我想说:2...

  • 03_windows下使用python自带IDLE(python

    时间:2018-01-10 作者:魏文应 简介: python自带了一个 IDE工具,供我们 调试代码 使用。...

  • 🌞

    门前的那个巷弄 潦草的收拾了一下 便觉得是拥有了一片天晴 2018-01-10

  • 薛蛮子说区块链

    薛蛮子“怼”徐小平:区块链投资上,我没他那么亢奋 萌大大 2018-01-10 19:56152371 “区块链革...

  • 亲子践行日记4~豆豆

    [2018-01-10] 今天是:周三,日出:晴 起床:7:00 就寝:20:40 践行49/90天 时间已过去一...

网友评论

      本文标题:2018-01-10

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