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