js 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 ( )
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.