js-this

初步理解this:

解析器(或叫浏览器)在调用函数每次都会向函数内部传递进一个隐含的参数。

        function fun(a,b){
            console.log("a="+a+",b="+b);
        }
        fun(123,456);//a=123,b=456

这是我们传递参数,而不是函数向函数内部传递参数。

这个隐含的参数就是this,这个this浏览器每次都会传。

        function fun(a,b){
            console.log(this);
        }
        fun(123,456);//this:Window {parent: Window, postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, …}

这里this是全局对象window;

this指向的是一个对象,这个对象我们称为函数执行的上下文对象

        function fun(a,b){
            console.log(this);
        }
        var obj={
            name:'孙悟空',
            sayName:fun
        }
        obj.sayName();//this:{name: "孙悟空", sayName: ƒ}

根据我们这个函数的调用方式的不同,this会指向不同的对象。

  (1)以函数的形式调用时,this永远都是window;

  (2)以方法的形式调用时,this是调用方法的那个对象;

深入理解this(难题): 

        window.val=1;
        var obj={
            val:2,
            dbl:function(){
                this.val *=2;
                val *=2;
                console.log(val);
                console.log(this.val);
            }
        };
        obj.dbl();
        var func=obj.dbl;
        //结果:2 4 8 8
原文地址:https://www.cnblogs.com/czh64/p/11969476.html