Javascript 에서 this 는 어떻게 작 동 합 니까?

2738 단어
1. 대상 방법 으로 호출
   var point={
           x:0,
           y:0,
           move:function(x,y){
               this.x=x;
               this.y=y;
           }
       }
       point.move(1,1);//this        , point   

this 는 함수 가 실 행 될 때 함수 가 정 의 될 때 가 아니 라 해당 하 는 값 을 가 져 옵 니 다.
eg:
        var a = {
            aa: 0,
            bb: 0,
            fun: function(x, y) {
                this.aa = this.aa + x;
                this.bb = this.bb + y;
            }
        };
        var aa = 1;
        var b = {
            aa: 0,
            bb: 0,
            fun: function() {
                return this.aa;
            }
        };
        a.fun(3, 2);
        console.log(a.aa); //3 this      
        console.log(b.fun()); //0  this      
        (function(aa) {
            var c = aa();
            console.log(c);
        })(b.fun); //1  //  fun     ,  this        ,  window

2. 함수 호출
var x = 1;
        function test() {
            this.x = 0;
        }
        test();
        console.log(x);//0      this         。

단점: 내부 함수 의 this 도 전체 대상 을 연결 합 니 다. 우 리 는 이곳 의 this 가 외부 함수 에 대응 하 는 대상 에 연결 되 기 를 바 랍 니 다.
해결 방법: this 를 하나의 변수 에 저장 하고 이 변 수 를 사용 하면 됩 니 다.
   var point = {
            x: 0,
            y: 0,
            moveTo: function(x, y) {
                var that = this;
                console.log(that);
                var moveX = function(x) {
                    that.x = x;

                };
                var moveY = function(y) {
                    that.y = y;
                }
                moveX(x);
                moveY(y);
            }
        };
        point.moveTo(1, 1);
        console.log(point.x);//1

3. 구조 함수 호출.
this 는 새로 만 든 대상 에 연결 되 어 this 가 전체 대상 에 연결 되 는 것 을 피 합 니 다.
     var x = 2;

        function test() {
            this.x = 1;
        };
        var a = new test();
        console.log(x);//2
        console.log(a.x);//1

4. apply 또는 call 호출 this 를 사용 하면 함수 호출 의 첫 번 째 매개 변수 로 현실 적 으로 설 정 됩 니 다.
apply 와 call 의 차 이 는 입력 을 요구 하 는 매개 변 수 는 배열 이 고 하나의 요 구 는 각각 들 어 오 는 것 입 니 다.
apply 를 예 로 들다
 var name = "window";
        var aa = {
            name: "Bob",
            showName: function() {
                return this.name;
            }
        };
        var other = {
            name: 'Jack'
        }
        console.log(aa.showName()); //'Bob' this         
        console.log(aa.showName.apply()); //'window' apply()    ,this          
        console.log(aa.showName.apply(other)); //'Jack'     ,this         

;
}

좋은 웹페이지 즐겨찾기