this指向の理解について

3343 ワード

thisの理解
  • thisはJavaScript言語の一つのキーワードであり、関数が異なる場合、thisの指向は変換されますが、いつまでも変わらないのは、呼び出された関数の対象
    
    function f1(){
    this.a=1;
    console.log(this.a)
     }
     f1()
    
  • です.
  • は、thisがグローバルオブジェクト
    var a=0;
    function f2(){
             this.a=10;
    }
    f2();
    console.log(a)//0
    /* *             var    ,              (    ),       *  a=0   this.a=10   */
    
  • に向けられていることを証明する.
  • 関数を対象とする方法で呼び出すと、thisはこの上位オブジェクトを指す.
        var obj={
         name: 'swatch17',
         age: 23,
         f3: function(){
                    console.log(this.name)
                  }
        }
        obj.f3()
        /*  this  obj*/
    
  • 構築関数として呼び出されると、thisはこの新しいオブジェクト
    function f4(){
            this.a=6;
    }
    var four=new f4()
    f4();//   this    ;
    console.log(four.a)//   this  four;
    
  • を指す.
    アプリとコール
  • call()方法は、いくつかのパラメータのリストを受け入れる一方、appy()方法は、複数のパラメータを含む配列
  • を受け入れる.
  • call()メソッドは、指定されたthis値といくつかの指定されたパラメータ値を使用して、関数または方法を呼び出します.Funtion.prototype.call().
  • appyとcallは全部Funtions.prototypeの方法です.両方は、関数動作のコンテキスト、すなわち関数内部thisの指向性を変更するための
    function team(){}
    
    team.prototype={
        club : 'Livepool',
        say:function(){console.log('My home team is ' + this.club );}
        }
    var fansA=new team;
    fansA.say()//My home team is Liverpool
    //  apply call  this   
    fansB = {club:'Chelsea'}
    fansA.say.apply(fansB)//My home team is Chelsea
    fansA.say.call(fansB)//My home team is Chelsea
    /*  this  fansB*/
  • である.
  • appy()、call()のパラメータが空の場合は、デフォルトでグローバルオブジェクト
  • を呼び出します.
    参考:MDN