함수의 범위 와이 포인팅은 JS의 매우 중요한 부분입니다. 이것을 명확히하고 내 논리가 어떻게되는지 확인하려면 논리가 필요합니다.
아래는 읽기에 관심이있는 항목을 직접 선택할 수있는 개요입니다.
• 기능 정의 방법 : 직접 정의 (창 아래, 내부 정의), 객체 방법, 객체 프로토 타입 방법;
• 기능 호출 방법 : 직접 전화, 전화/신청
• 직접 정의 된 함수 및 객체의 방법의 경우, 범위는 기본적으로 정의의 범위 체인입니다.
• 직접 정의 된 함수의 경우 이는 창을 가리 킵니다.
• 객체의 방법의 경우, 이것은 인스턴스화 된 객체를 가리 킵니다 (인스턴스형 객체가 기본적으로이를 반환하는 경우).
• 전화/적용을 사용 하여이 방법의 포인팅을 변경하십시오.
• 함수 또는 메소드를 정의 할 때 스코프 체인을 변경할 수 있습니다.
아래에서 자세히 설명해 봅시다.
개요에 언급 된 바와 같이 함수의 정의는 직접 정의 (창 아래, 내부 정의), 객체 방법 (또는 객체 프로토 타입 메소드)의 두 가지 유형으로 나눌 수 있습니다. 다음 예제 코드에서 함수가 이름을 사용할 때 해당 도메인의 함수 FN1 및 FN2 및 메소드 도전이 해당 도메인에서 나온 것을 알 수 있습니다.
var name = '창 아래의 이름 <br/>'; var resultcon; function fn1 () {resultcon.innerhtml += name;} 함수 myobj () {var name = ''myobj <br/> '; this.dofunction = function () {resultcon.innerhtml += 이름;이름 값을 사용할 때 "이름"이 "this.name"으로 대체되면 어떻게됩니까? 다음 예를 참조하십시오.
var name = '창 아래의 이름 <br/>'; var resultcon; function fn1 () {resultcon.innerhtml += this.name;} 함수 myobj () {var name = 'myobj <br/>'; this.dofunction = function () {resultcon.innerhtml += this.name;결과를 판단하면 개요에서 4 번째 및 5 번째 항목을 확인할 수 있습니다. 우리는 이것과 범위가 독립적 인 변수 쿼리 논리에 따라 두 개의 별도의 체인 세트임을 알 수 있습니다. 특정 쿼리 로직은 다음 성능 분석에서 언급됩니다. 초보자라면 먼저 "JS Scope Chain"의 기본 지식을 보는 것이 좋습니다.
함수의 호출 방법과 관련하여 다음 예제를 사용하여 개요의 2 차 및 6 번째 기사를 설명합니다.
var name = '창 아래의 이름 <br/>'; var resultcon; function fn1 () {resultcon.innerhtml += this.name;} 함수 myobj () {var name = 'myobj <br/>'; this.dofunction = function () {resultcon.innerhtml += this.name;호출 할 때 통화 및 적용을 사용하는 것은 호출 된 함수 의이 포인팅을 변경하는 것입니다. With의 사용은 호출 된 함수에서 변수의 쿼리 도메인을 변경하는 것입니다. 위의 예제에서 호출과 이름을 제거하고 함께 추가하여 기능을 보여줍니다.
var name = '창 아래의 이름 <br/>'; var resultcon; function fn1 (myscope) {with (myscope) {resultcon.innerhtml += name; }} function myobj (myScope) {var name = 'myobj <br/>의 이름;사용하기 편리하지 않으며 호출 된 함수에 추가해야합니다. 어떤 사람들은 다음을 호출하여 변수의 범위를 전체적으로 변경할 수 있는지 궁금 할 것입니다.
(myscope) {fn1 (); fn2 (); var obj = new myobj (); obj.dofunction ();}불행히도, 아니! 따라서 Call and Apply는 일부 성숙한 프레임 워크의 어느 곳에서나 사용할 수 있지만 거의 사용되지 않습니다. JSHINT를 사용하여 JS 구문을 감지 할 때 작은 빨간색 도트가 표시됩니다. 일부 JS 인코딩 안내서에서는 기본 쿼리 변수 체인이 변경되면 나중에 유지 보수 인력과 일부 성능 고려 사항을 혼동하기 때문에 가능한 한 적은 상태로 사용하는 것이 좋습니다. 함께 사용하십시오.
위의 기사는 범위를 깊이 이해하고 JS 기능 의이 방향은 내가 공유하는 모든 내용입니다. 나는 그것이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.