js this 의 바 인 딩 과 함수 역할 영역

1821 단어
this:
자 바스 크 립 트 에서 상하 문 대상 은 바로 this 지침, 즉 호출 된 함수 가 있 는 환경 입 니 다.문맥 대상 의 역할 은 함수 내부 에서 호출 대상 자 체 를 참조 하 는 것 입 니 다.JavaScript 에서 본질 적 으로 함수 형식의 변 수 는 이 함수 실 체 를 가리 키 는 인용 입 니 다. 인용 사이 에 값 을 부여 하면 대상 에 게 복사 행 위 를 하지 않 습 니 다.우 리 는 함수 의 모든 인용 을 통 해 이 함 수 를 호출 할 수 있 습 니 다. 다른 점 은 실행 시의 문맥 에 있 을 뿐 bid, apply, call 등 을 통 해 this 의 방향 을 바 꿀 수 있 습 니 다.
function test() {
    var obj = {
        f: function() {
            console.log(this === window)
        }
    }
    return obj;
}

test().f() //    false   f    , obj    

function test() {
    var obj = {
        f: function() {
            console.log(this === window)
        }
    }
    return obj.f;
}

test () () / 출력 true test () 는 함 수 를 되 돌려 줍 니 다. (사실 되 돌아 오 는 함 수 는 임시 변수 에 의 해 응용 되 고 window 역할 영역 에서)
이것 을 변경
var myObj = {
    specialFunction: function () {
    },
    getAsyncData: function (cb) {
        cb();
    },
    render: function () {
        var that = this;
        this.getAsyncData(function () {
            that.specialFunction();
        });
    }
};

myObj.render();
render 라 고 쓰 거나.
render: function () {

    this.getAsyncData(function () {

        this.specialFunction();

        this.anotherSpecialFunction();

    }.bind(this));

}

Function.prototype.bind = function (scope) {
    var fn = this;
    return function () {
        return fn.apply(scope);
    };
}

함수 역할 영역
함수 작용 역 의 삽입 관 계 는 호출 할 때 결정 되 는 것 이지 호출 할 때 결정 되 는 것 이 아니다. 즉, 자 바스 크 립 트 의 작용 역 은 정적 작용 역 이 고 문법 작용 역 이 라 고도 부른다. 이것 은 작용 역 의 삽입 관 계 는 문법 분석 할 때 확정 할 수 있 기 때문에 운행 할 때 확정 할 필요 가 없다
var a=1;
function test(){
    var a=2;
    return function(){
        console.log(a)
    }
}
test()(); //    2     (        )

좋은 웹페이지 즐겨찾기