js的this(简单)

js的this

this是很多编程语言中的关键字,在JavaScript中一般这样理解this:this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象

普通函数调用

一般没有特指的情况下指向的都是全局对象window

var username='cn'
function fn(){
    
    
    alert(this.username);//cn
}
fu();

window.username='cn'
function fn(){
    
    
    alert(this.username);//cn
}
fn();
//可以理解为
//window.fn();

特殊情况

let username='cn'
function fn(){
    
    
    alert(this.username);//undefined
}
fn();

因为用let声明的变量不是window

函数调用

函数名直接调用

 
 function myobj(){
    
    
     var myname = "发挥不广泛";
     console.log(this);
     console.log(this.myname);
 }
 myobj();//等价于 window.myobj();
//window
//undefined

通过对象函数名调用

 var myname = "我是window的name";
 function myobj(){
    
    
     var myname = "发挥不广泛";
     console.log(this);
     console.log(this.myname);
 }
 var a = {
    
    
     fun:myobj, //将函数myobj 赋值给a.fun
     myname:"我是a的name"
 };
 myobj();
//window
//我是window的name
 a.fun();
//myname:我是a的name
//我是a的name


简单例子

window.b=2222
let obj={
    
    
    a:111,
    fn:function(){
    
    
        alert(this.a);//111
        alert(this.b);//undefined
    }
}
obj.fn();
//this指向上下文

构造函数调用

let TestClass=function(){
    
    
    this.name='111';
}
let subClass=new TestClass();
subClass.name='cn';
console.log(subClass.name);//cn
let subClass1=new TestClass();
console.log(subClass1.name)//111

猜你喜欢

转载自blog.csdn.net/qq_51649346/article/details/124082536
今日推荐