this的指向问题

Posted lita07

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了this的指向问题相关的知识,希望对你有一定的参考价值。

1.this在构造函数中,在对象的方法中,this指向当前对象

对象的方法中
        var person={
            ‘name‘:‘xm‘,
            ‘setSex‘:function(){
                this.sex=sex; 
                console.log(this); //person这个函数
            }
        }
        console.log(person.setSex);
构造函数中(构造函数创建对象)
        function parent(name,age,sex){
            this.name=name;
            this.age=age;
            this.show=function(){
               return this.sex=sex;
            }
            console.log(this); //this指向parent
        }
        var p1=new parent(‘xh‘,12,‘male‘); 
        p1.show();
        console.log(p1.sex); //male
构造函数的this指向new返回的对象

 2.在call和apply参数中,this的指向是第一个参数

cal和apply方法可以冒充对象,并使用该对象的方法 

var x=0; function test(){ alert(this.x); //0 console.log(this); //window } var p={}; p.x=1; p.show=test; p.show.apply(); //this没有指定,故指向windowvar x=0; function test(){ alert(this.x); //1 console.log(this); //p } var p={}; p.x=1; p.show=test; p.show.apply(); p.show.apply(p); //this指向p对象
总结:this只有在函数被调用时才能确定下来,this指向调用函数的对象

 3.DOM元素的监听处理函数的this指向监听器所在的DOM对象

window.setTimeout()和window.setInterval()的函数中的this默认时window对象

var name=‘Lita‘;
 var timer=setTimeout(function(){
     var name=‘L‘;
     console.log(this.name); // 打印Lita
 },1000);

 

 

以上是关于this的指向问题的主要内容,如果未能解决你的问题,请参考以下文章

很实用的JQuery代码片段(转)

微信小程序代码片段

在 webview_flutter 中启用捏合和缩放,在哪里添加代码片段 [this.webView.getSettings().setBuiltInZoomControls(true);]

箭头函数的this指向问题

laravel特殊功能代码片段集合

在片段java类中使用“this”和getLastSignedInAccount时出现错误[重复]