this

Posted

tags:

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

this

指向当前对象。

各种情况

全局上下文

node.js对全局上下文this特殊处理。

console.log(this); ——输出 {}

 

this 全局上下文和函数指向 全局

函数

 var func=function(){
        console.log(this);
    }
    func();            // 全局

 

对象

  • 只有对象.方法,this指向当前对象;其余都是指向全局。
  • 在对象的方法使用this,指向当前对象
  • 在对象方法里嵌套,普通函数的调用,指向全局

    var stu=(){
        name:ww,
        intro:function(){
            console.log(this,this.name);
        }
    }
    stu.intro(); 

     

改变this的指向方法

call , apply

执行函数,并改变this指向

区别:

  • call:以参数列表形式传递;
  • apply:以数组传递

    var func=function(a,b){
        console.log(this);
        console.log(hello,a,b);
    }
    func.call(11,22);
    func.call(hello,[11,22]);

     

bind

声明函数,在函数后面{}末尾。

函数声明时,利用 bind 改变this指向。

箭头函数 =>

箭头函数中的this和上下文的this一致。

内部没有作用范围(上下文),this指向和外部一样。

var func1 = a => (++a); ()表示有return.

 

 

7var myObject={
        foo:bar,
        func:function(){
            var self=this;
            console.log(this.foo);  // bar;
            console.log(self.foo); //  bar;   self=this
            (function(){ // 嵌套,指向全局
                console.log(this.foo);  // undefined; 未定义,在整个(var myObject)外部找,没有foo
                console.log(self.foo); // bar; 找的上一个console.log(self.foo);输出的值
            })()
        }
    }
    myObject.func();

 

8var User={
        count:1,
        getCount:function(){
            return this.count;  // 1,renturn返回值
        }
    }
    console.log(User.getCount()); // 1;

    var func=User.getCount;
    console.log(func());  // undefined;

 

 全局上下文和函数 this 指向全局;只有对象.方法,this指向当前对象,其余指向全局。

  call/aplly都可执行函数,但传参不同;bind声明函数在函数后面{}末尾;箭头函数=> .

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

vue2.0 代码功能片段

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

ngx-translate实现国际化:this.translate.use()this.translate.get()this.translate.instant()onLangChange(代码片段

Discuz代码片段

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

实用代码片段将json数据绑定到html元素 (转)