码迷,mamicode.com
首页 > Web开发 > 详细

js中this指向

时间:2020-06-03 20:19:53      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:java   size   模式   改变   ber   运行时   rip   调用   win   

1、this概述
  this是javascript语言的一个关键字,它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用,随着函数使用场合的不同,this的值会发生变化,指向是不确定的,也就是说可以动态改变this的指向,但是有一个总的原则,就是this总是指向调用函数的那个对象。(this一般情况下都是指向函数的拥有者)
 
2、"use strict" 严格模式下this的值是undefined
  function test(){
    "use strict";           // 严格模式
    console.log(this)     // undefined
  }
  test()
 
3、数组
  function f1(){
    console.log(this)  
  }
  var  arr = [f1,2,3];
  arr[0]()     // this指向arr
  var f2 = arr[0];
  f2();         // this指向window
 
4、内置函数 setTimeout(定时器中this指向window)
  function f1(){
    console.log(this)  
  }
  setTimeout(f1,1000)    // this指向window
 
5、回调函数中this也是指向window
 
6、对象
  var obj = {};
  obj.name = 123;
  obj.action = function(){console.log(this)}
  function  f1(){console.log(this)}
  obj.action()          // this指向obj
  obj.f2 = f1;
  obj.f2()    //this指向obj
 
7、构造函数中的this
  构造函数就是通过这个函数生成一个实例,当一个函数作为构造函数使用时(通过new关键字),它的this指向新创建的那个对象,如果没有使用new关键字,那么它就是一个普通的函数,this指向window
 
8、自执行函数中的this执行window
  var  number = 1;
  var obj = {
    number:2,
    action:function( ){
      this.number = 5;
       (function( ){
          console.log(this.number)   // 1
      })( )
       console.log(this.number)  // 5
     }
   }
   obj.action( )
 
总结:this指向函数的调用者,没有调用者就指向window

js中this指向

标签:java   size   模式   改变   ber   运行时   rip   调用   win   

原文地址:https://www.cnblogs.com/cuishuangshuang/p/13039590.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!