Javascript之this

一.、概念

this是在运行时进行绑定的,不是在编写时进行绑定,取决于函数的调用方式

二、四条绑定规则

  1. 默认绑定
    即独立函数调用,无法应用其他规则时使用此规则
      function foo(){
        "use strict"
        console.log(this.a);
      }
      var a = 2;
      foo() //严格模式下,this不指向window,否则指向window
  1. 隐式绑定
    当函数引用有上下文对象时,隐式绑定会把this绑定到该上下文对象;

例如:

      function foo(){
        console.log(this.a);
      }
    var obj = {
      a:42,
      foo:foo
    }
    obj.foo()
注:对象属性引用链中只有最后一层影响调用位置

例如:

    function foo(){
      console.log(this.a);
    }
    var obj = {
      a:2,
      foo:foo
    }
    var obj1 = {
      a:22,
      obj:obj
    }
    obj1.obj.foo() //2

2_1:隐式绑定丢失

      function foo(){
        console.log(this.a);
      }
      var obj = {
        a:2,
        foo:foo
      }
      var bar = obj.foo;
      var a = "oops"
      bar() //osps

3.显式绑定

      function foo(){
        console.log(this.a)
      }
      var obj = {
        a:2
      }
      var bar = function (){
        foo.call(obj)
      }
      bar() //2
      setTimeout(bar,100)//2
      bar.call(window)//2

4.New操作符绑定

function Foo(){
  this.name ="A"
}
var obj =new Foo()
console.log(obj.name);

三、绑定优先级

new操作符>显式>隐式>默认

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 this 关键字是 JavaScript 中最复杂的机制之一。之前笔者在使用RN开发的时候碰到了 this ...
    HideOnBush阅读 251评论 0 1
  • 前言 近期准备好好的读一读《你不知道的JavaScript(上卷)》这本书,俗话说的好,好记性不如烂笔头,读到th...
    不止前端阅读 303评论 0 2
  • this是JavaScript中的一个很特别的关键字,同时,它也是JavaScript中最复杂的机制之一,重要性同...
    萧玄辞阅读 185评论 0 0
  • 摄影:SHILO设备:佳能7D
    一墨志阅读 379评论 3 5
  • 连续三个星期没有休息了,特别是清明防火期间,早五点上山,晚八点下山,作息紊乱,睡眠不足,七天日夜颠倒的生活之后,又...
    墨遥阅读 313评论 0 0