JavaScript 函数调用的 this词法

       函数调用时的this实际上是在函数被调用时发生绑定,它指向什么完全取决于函数在哪里被调用。

        特例:当函数作为构造函数被调用时,即使用new 来构造一个新对象,会自动执行以下操作:

        【1】创建一个新对象;

        【2】这个新对象会被执行原型连接;(即新对象的__proto__会指向构造函数的prototype对象)

        【3】这个新对象会绑定到函数体中的this;

        【4】如果函数没有返回其他对象,那么new表达式中的函数会自动返回这个新对象。“构造函数”显示地返回一个对象,则会以返回的对象为准,如果“构造函数”返回“string、number、boolean、null、undefined、symbol,等premitive原始数据类型,则忽略该返回值并返回新对象。

        判断函数中this对象的绑定准则:

  • 由new调用?绑定到新创建的对象
  • 由call或者apply(或者bind)调用?绑定到指定对象
  • 由上下文对象调用?绑定到那个上下文对象。
  • 默认:在严格模式下绑定到undefined,否则绑定到全局对象
  • 箭头函数中的this,会通过词法作用域指向该函数定义时的上下文对象,而非调用时动态绑定。

     

posted @ 2016-10-20 17:28  wust_hy  阅读(150)  评论(0编辑  收藏  举报