美文网首页让前端飞
JavaScript--this指向

JavaScript--this指向

作者: 阿毛啊726 | 来源:发表于2020-10-30 11:11 被阅读0次

this存在的场景
1)作为普通函数中的this
2)使用call apply bind
3)作为对象方法被调用
4)在class中被调用
5)箭头函数:this的取值,是上级函数的取值

this的值,是在函数执行时确定的,不是在定义的时候确定的

2)bind 将一个方法应用到另一个对象上

zhang.say.call({name:"www"})// www

3)作为对象方法被调用

var *zhang*={      
      name:"zs",      
      say(){         
           *console*.log(this.name);      
      },     
       wait(){        
          setTimeout( function(){  
                   *console*.log(this);//window
            })      
        } 
 } 
 zhang.wait()//window 匿名函数是全局作用域的

5)箭头函数的this取值是上级作用域

var *zhang*={      
      name:"zs",     
     say(){          
          *console*.log(this.name);     
     },    
      wait(){          
          setTimeout( ()=>{
                 console.log(this);//object[zhang]          
          })      
      }  
}  
zhang.wait()

this指向问题
当函数被调用时,我们看紧邻括号“()”的左边。如果在括号的左侧存在一个引用,传递给调用函数的“this”值是引用所属于的那个对象,否则this的值就是全局对象。

console.log(this) //window 
console.log(typeof this);//object  
console.log(this == *window*);//true
function A() {     
   function B() {          
      console.log(this) //window          
      console.log(typeof this);//object          
      console.log(this == *window*);//true     
    }      
  B()  
} 
A()

obj调用了这个方法,this指向为obj

 var  *obj*={      
     name:"这是一个对象",     
     objFun:function () {          
          console.log(this); //object naem:""               
          console.log(typeof this);//object          
          console.log(this === *window*);//false          
          console.log(this.name);//这是一个对象      
    }
 }  
obj.objFun() 

虽然这个方法是obj的,但是obj没有调用它,this指向window

var  obj={
        name:"这是一个对象",
        objFun:function () {
            console.log(this); //window
            console.log(typeof this);//object
            console.log(this === window);//true
            console.log(this.name);// 
        }
    }
 var test=obj.objFun
 test()
var name ="window"
    var obj={
        name:"第一层obj",
        objBar:{
            name:"第二层obj",
            barFun:function () {
                console.log(this.name);
            }
        }
    }
    var test1=obj.objBar.barFun()//第二层obj
    var test2=obj.objBar.barFun
    test2()//window
    var test3=obj.objBar;
    var testBar=test3.barFun
    testBar()//window

此题this指向哪里==>不知道,没人调用不知道指向谁

function f() {     
    console.log(this);  
}

this总是指向函数的直接调用者(而非间接调用者)

相关文章

  • JavaScript--this指向

    this存在的场景1)作为普通函数中的this2)使用call apply bind3)作为对象方法被调用4)在c...

  • JavaScript--this指针的使用

    重要的事情先讲三遍:谁调用this,this指向谁!谁调用this,this指向谁!谁调用this,this指向谁...

  • 你不知道的javascript--this

    人们很容易把 this 理解成指向函数自身,这个推断从英语的语法角度来说是说得通的。但是首先需要消除一些关于 th...

  • this指向以及改变this指向

    改变this指向 call() apply() bind()

  • this指向

    this指向: 简单的一句话,谁调用的函数,this就指向谁 例子: var obj = { fun1: func...

  • this指向

    axios.get('/api', {params: {name: "kerwin",age:100}}).the...

  • this指向

  • this指向

    例 例

  • this 指向

    window.name = 'xiaoyu' var myObj = {name: 'seven',getName...

  • 指向

    平静的海托着翻飞的火焰,离开港口就有多少离人的泪还会再次上演,看着手上的钟表计算着离开的航线,肃穆的夜还有一串星火...

网友评论

    本文标题:JavaScript--this指向

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