1.函数中的this,是谁调用,指向谁

遵循两条原则:a.判断this在哪个函数中 b. 这个函数是那种调用模式调用的

(1)普通函数调用,指向window

<script>
  function fn(){
    console.log(this)
  }
  fn()
  </script>

打印结果:window

(2)对象调用,指向obj

<script>
  function fn(){
    console.log(this)
  }
  var obj={}
  obj.f=fn;
  obj.f();
  </script>

打印结果:{f:f}

(3)new 调用函数,this指向创建出来的实例

  <script>
  function fn(name){
   this.name=name;
   this.say=function(){console.log('我的名字是'+this.name)}
  }
 var f =new fn('张三');
 f.say()
  </script>

打印结果:我的名字是张三

(4)注册事件,this指向事件源

<body>
<div class="box">box的内容</div>
  <script>
  var box=document.getElementsByClassName('box')[0]
box.onclick=function(){
console.log(this.innerHTML)
}
</script>
</body>

打印结果:box的内容

(5)定时器调用,this指向window

  <script>
  function fn(){
    console.log(this)
  }
setInterval(fn,1000)
</script>

打印结果:window

02-10 21:04