this--그건 아실 거예요.
암시적 바인딩
대상 내부에 지향 함수의 속성을 포함하고 속성을 통해 간접적으로 함수를 인용하여this를 이 대상에 간접적으로 연결합니다.
var a=1;
function foo(){
console.log(this.a);
}
var obj={
a:2,
foo:foo
};
obj.foo(); // 2
foo();//
바인딩 표시
대상 내부에 함수 인용을 포함하지 않으려고 합니다. 대상에 함수 (apply () 와call (),bind () 를 강제로 호출합니다.
ply()와call()는 두 개의 매개 변수를 수신한다. 첫 번째 매개 변수는 하나의 대상이다. 즉, 이 대상을 this로 연결하고 두 번째 매개 변수는 수신하는 것이다.
var a=1;
function foo(){
console.log(this.a);
}
var obj={
a:2,
};
foo.call(obj);// foo , this obj
bind() 함수를 바인딩하는 방법:
var a=1;
function foo(){
console.log(this.a);
}
var obj={
a:2,
};
var bar=foo.bind(obj);// bind() , apply() this obj
bar();
new () 바인딩:
먼저 명확히 해야 한다. 구조 함수는 사실 new 조작부호에 의해 호출된 일반 함수이고 new 호출 함수를 사용할 때 다음과 같은 조작을 실행한다. var bar=new Foo()를 가정한다.(1) 새 대상bar(2)를 만듭니다. 새 대상bar는 원형 연결을 실행합니다. (3) 새 대상bar는Foo() 함수 호출에 귀속된this(4) 함수Foo()가 다른 대상을 되돌려주지 않으면 new 표현식의 함수 호출은 자동으로 이 대상을 되돌려줍니다.
function Foo(a){
this.a=a;
}
var bar=new Foo(2);
console.log(bar.a); // 2
간단하게 말하면 new 조작부호를 통해 새로운 대상을 만들고 구조 함수 호출 중인this에 연결합니다.
this 귀속 우선 순위
(1) 함수가 new 조작부호에 호출되었는지 여부입니다. 만약에this가 새로 만든 대상과 연결됩니다. (2) 함수가call (), apply (),bind () 를 통해 호출된다면,this는 지정한 대상과 연결됩니다. (3) 함수가 특정한 대상의 속성으로 이 대상에 호출되었을 때,this는 호출된 대상입니다.
화살표 함수 귀속this
화살표 함수는 함수 작용역이나 전역 작용역에 따라this를 지정합니다
var a=1;
function foo(){
return (a)=>{console.log(this.a)}; //
}
var obj={
a:2,
};
foo.call(obj)(); // 2
// this obj ,
그러나 주의해야 할 것은 화살표 함수의 귀속은 수정할 수 없다는 것이다. 즉, obj에 귀속된this의 화살표 함수를 다시 다른 새로운 대상에 귀속시키면 두 번째 귀속은 무효다.
var a=1;
function foo(){
return (a)=>{console.log(this.a)};
}
var obj={
a:2,
};
var obj2={
a:3,
}
foo.call(obj).call(obj2); // 2
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.