JavaScript 의 왜냐하면...
this 는 무슨 귀신 입 니까?
this 이 놀 이 를 귀신 이 라 고 부 르 는 것 은 지나 치지 않 습 니 다. 많은 흰 둥 이 는 화면 을 보 자마자 this 의 대본 이 순간 어 지 럽 습 니 다.자바, C \ # 같은 this 처럼 보이 지만 직관 적 으로 자바, C \ # 의 this 를 뛰 어 넘 은 것 같 습 니 다. 어렴풋 하고 모 르 는 것 같 습 니 다.각종 도 모, G 형 은 대부분 본 선과 의 해석 을 받 았 다.심혈 을 기울 여 기록 하고 연구 할 것 이 며, 무심코 대충 훑 어 보 았 을 뿐이다.그래서 많은 늙 은 새들 이 this 가 무슨 귀신 인지 철저히 알 지 못 했다.this 가 무슨 귀신 인지 알 고 싶다 면 이 귀신 이 어떻게 왔 는 지 먼저 알 아야 한다.
자 바스 크 립 트 의 디자인 취 지 는 과정 적 인 것 이 라 고 하 는데 뒤에 있 는 포 스님 은 시대 의 흐름 을 따라 가기 위해 OOP 를 우여곡절 하 게 실현 하기 위해 this 를 도입 하여 사례 대상 을 나타 낸다.OOP 는 실현 되 었 지만 자 바스 크 립 트 의 세 계 는 이때부터 this 가 하나 더 생 겼 다.this 는 자 바스 크 립 트 의 OOP 에 적 용 될 때 실례 자 체 를 나타 낸다.하지만 내 가 쓴 자 바스 크 립 트 가 new 대상 이 아니 라 마음대로 this 를 썼 다 면 이때 this 는 무엇 을 의미 하 는가?구 덩이 를 메 우 고 구 덩이 를 파 다 니!구덩이 가 있 으 면 채 워 야 한다. 그래서 포 대 사 는 이 this 에 의 미 를 부여 하려 고 했다. this 가 OOP 에 응용 되 었 을 때 인 스 턴 스 자 체 를 나타 낸다.한편, this 가 OOP 가 아 닌 경우 this 가 있 는 요소 의 귀속 대상 을 나타 낸다.이 말 은 이리 저리 추상 적 이어서 코드 를 보면 가장 진실 하 다.
1) this 가 function 에 있 을 때 funciton 은 과정 식 함수 일 뿐이다.
/** :
*test , OOP
* test this, this test
* test Window
* ****/
function test(){
console.log(this); // Window
}
test();
2) this 가 실례 화 되 지 않 은 대상 에 있 을 때
/** :
* this f
*f obj
* :this obj
* ****/
var obj={
a:123,
f:function(){
console.log(this);// obj
console.log(this.a);// 123
}
};
console.log(obj.f());//
3) this 가 OOP 의 게임 방법 에 적 용 될 때
/** :
*clazz , clazz
*this new
* ****/
function clazz(a,b){
this.a=a;
this.b=b;
this.print=function(){
console.log(this.a+this.b);
};
}
var c1=new clazz(1,1);
c1.print(); // :2
var c2=new clazz(2,2);
c1.print(); // :4
4) 이것 이 훔 쳐 서 기둥 으로 바 뀌 었 을 때
/** :
* call apply f this
* ****/
var obj={
a:123,
f:function(){
console.log(this);// obj
console.log(this.a);// undefined
}
};
// call apply f , this window
obj.f.call(this);
가방 닫 는 게 뭐야?
우 리 는 쓸데없는 말 은 그만 하고, 방법 에 따라, 우선 이 소위 폐쇄 라 는 것 이 어떻게 왔 는 지 알 아 보 자.전 세계 (코드 를 쓰 는 사람) 가 다 알 고 있 습 니 다. c, 자바, c + + 와 같은 언어 는 모두 엄격 한 문법 이 있 습 니 다. 특히 데이터 형식, 함수 의 정 의 는 모두 자신의 규칙 이 있 습 니 다. 당신 이 쓰 고 싶 은 대로 쓰 는 것 이 아 닙 니 다.그러나 자 바스 크 립 트 라 는 놀 이 는 포 대사 에 의 해 네가 쓰 고 싶 은 대로 쓰 도록 설계 되 었 는데 함수 에서 함 수 를 다시 정의 할 수 있다 는 것 을 보면 자유도 가 매우 크다 는 것 을 알 수 있다.자바, c + + 를 다시 봐 봐. 왜 이래?자 유 는 자유 입 니 다. 그러나 이 게임 방법 은 문 제 를 일 으 켰 습 니 다. 대학 에서 책 을 열심히 읽 은 신발 은 모두 알 고 있 습 니 다. 함 수 는 스 택 에서 실 행 됩 니 다. 만약 에 함수 내장 함수 가 있 으 면 자 함 수 는 부모 함수 에서 정 의 된 구성원 을 인용 합 니 다. 부모 함수 가 over 가 되 었 을 때 일반적인 방식 으로 부모 함수 가 스 택 에서 나 왔 습 니 다. 그 정의 의 구성원 도 Over 가 되 어야 합 니 다.만약 이때 하위 함수 가 살아있다 면, 그것 이 인용 한 부모 함수 변수 가 또 보이 지 않 으 면, 그 하위 함 수 는 사용 할 수 없 을 것 이다.그래서 부 대 사 는 이 bug 에 패 치 를 해 야 했 고 가방 을 닫 고 놀 면 태 어 났 습 니 다.그럼 우리 통속 적 으로 폐쇄 에 대해 정 의 를 내 립 시다.
폐쇄: 살 아 있 는 사람 이 죽은 사람 에 게 서 물건 을 훔 쳐 와 죽은 사람 을 따라 가지 않 고 사라 지게 한다.살 아 있 는 사람 이 이 물건 들 을 가 졌 기 때문에 수명 도 길 어 졌 다.이것 은 자 바스 크 립 트 가 천마 행 공의 자유도 에 대응 하기 위해 만 든 버그 입 니 다!
이것 은 예 를 들 어 좀 고상 하지 않 지만 단지 관리 가 이해 하기 편리 하도록 하기 위해 서 일 뿐 이 니 개의 치 마 세 요.좋아, 코드 분석 을 보 자.
function oldMan(){
var money=999999;//
//
return function young(){
console.log(" "+money+" ");
}
}
var y=oldMan();// ,oldMan , !!
y();// ,
관 리 는 네가 이 몇 십 자의 통속 적 인 해법 을 보 았 는 지 모 르 겠 지만, 이른바 폐쇄 라 는 것 에 대해 아직도 경외 심 을 가지 고 있 는 지 모르겠다.
만약 네가 이 몇 편의 통속 적 인 박문 을 진지 하 게 본다 면, 나 는 네가 자 바스 크 립 트 에 대한 인식 이 틀림없이 또 다른 계단 이 라 고 믿는다.물론 전단 에 발 을 붙 이려 면 자바 스 크 립 트 만 으로 는 먹고 살기 에 부족 하 다. HTML, CSS 도 알 아야 한다.건물 주 는 이어서 이 두 가지 지식 에 대해 몇 편 더 이야기 할 계획 이다.관심 있 으 시 면 유의 하 세 요!다른 자 바스 크 립 트 문제 도 같이 공부 하고 토론 하 는 것 을 환영 합 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.