>웹 프론트엔드 >JS 튜토리얼 >멋진 js_javascript 트릭

멋진 js_javascript 트릭

WBOY
WBOY원래의
2016-05-16 19:08:561044검색
코드 복사 코드는 다음과 같습니다.

>>> b() {return "aaa"} Function.prototype.c=function(){return b();}}
>>> a()
>>> >function( )
>>> a.c()
"aaa"
>>> a.hasOwnProperty("c")
false

참조 이 코드는 먼저 함수 a를 선언하고 함수 b를 내부적으로 정의합니다. 그러나 함수 b는 함수 객체 a의 메서드가 아니라 단지 임시 변수 함수(또는 전용 함수)일 뿐입니다. 나중에 function(){}을 사용하여 a 내부에 함수 c가 정의되었으므로 클로저가 생성되었으므로 c는 물론 b를 포함하여 a 아래에 있는 블록의 모든 내부 변수를 탐색할 수 있습니다. Function.prototype 아래에 c를 연결했습니다. 즉, a에 직접 연결되지 않고 a의 프로토타입 체인에 연결됩니다. 최종적으로 실행되며 hasOwnProperty도 false이고

이 있습니다. code

코드 복사 코드는 다음과 같습니다.
>>> {}; 함수 a(){함수 b(){return "aaa"} d.c=function(){return b();}}
>>> a()
>> > d.c () 
"aaa" 



Context는 이를 변경하기 위해 호출 적용 메소드를 사용할 수 있지만, 함수가 정의된 후에는 클로저를 수정할 수 없습니다. 예, 그럴지는 모르겠습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.