zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    LOJ164 高精度除法
    CQOI2013 新Nim游戏 和 BZOJ1299 巧克力棒
    UOJ514 通用测评号 和 CF891E Lust
    CF526F Pudding Monsters 和 CF997E Good Subsegments
    UOJ513 清扫银河
    SNOI2020 水池
    NOI2015 品酒大会 和 SNOI2020 字符串
    SNOI2020 生成树
    BJOI2020 封印
    UOJ523 半前缀计数
  • 原文地址:https://www.cnblogs.com/czh64/p/11969476.html
Copyright © 2011-2022 走看看